• mysql


    在创建一个n列的索引时,遵循“最左前缀”原则

    假设有如下表: create table AAA (a varchar2(32) ,b varchar2(32),c date);

    在a和c列上建普通索引: create index iN_AAA_1 on AAA (a, c);
    1.索引左前缀性的第一层意思:必须用到索引的第一个字段。select * from AAA where b=:xxx and c=sysdate;则不会用到索引,因为必须有a出现在where 语句中才会使用到该索引。
    2. 索引前缀性的第二层意思:对于索引的第一个字段,用like时左边必须是固定值,通配符只能出现在右边。select * from AAA where a like '1%';会用到索引;而select * from AAA where a like '%1';不会用到索引。
    3.索引前缀性的第三层意思:如果在字段前加了函数,则索引会被抑制,例如:select * from aaa where trim(a)=1,则不会用到索引。
    在字段前嵌入了表达式,索引也将被抑制。假设a是date格式的,那么where a+7<sysdate将不会用到索引,而where a<sysdate-7会用到索引。


    还有两个特殊声明:
    1).select * from AAA where a=:xxx and c=sysdate与 select * from AAA where c=sysdate and a=:xxx;都会用到索引,即与where语句中字段出现的顺序无关;

    2).select * from AAA where a=:xxx and b=1;会使用索引,此时A出现,即使其他字段不是索引字段也会使用到索引。

  • 相关阅读:
    git 操作
    移动端Web开发注意事项(响应式)
    jQuery插件通用写法
    关于清除浮动(BFC),float和inline-block
    js和css的顺序关系及js加载执行优化探索
    表单验证
    日期比较
    常用正则表达式
    js事件线程机制和异步执行
    阻止事件冒泡
  • 原文地址:https://www.cnblogs.com/songcuiting/p/10385058.html
Copyright © 2020-2023  润新知