zoukankan      html  css  js  c++  java
  • MySQL 中索引优化(即避免索引失效)

    索引优化(即避免索引失效)

    1. 全值匹配:查询字段按顺序在索引中都可以找到。

    2. 最左前缀法则:查询字段与索引字段不同时,会导致索引失效,即如果索引了多列,则查询字段从索引最左前列开始,不要跳过已有索引列。

    3. 不要再索引上做任何计算:包括计算、函数、(自动或手动)类型转换。

    4. 索引列上不能有范围:将可能做范围查询的字段放在索引顺序的最后。

    5. 尽量使用索引覆盖:即查询列与索引列一致,不要写select *

    6. 不要使用!=<>

    7. 使用is null is not null可能导致索引失效

    例:
    select age from students where name is not null;
    此时,name字段索引失效
    
    当,name 字段允许为 null 时:
    select age from students where name is null;
    可以使用索引,但 is not null 不可以
    
    1. like 模糊查询:前缀中不能出现“%”。

    2. 减少使用 or:用union allnuion代替or

    3. 字符串一定要加单引号


    口诀

    全职匹配我最爱,最左前缀要遵守;

    带头大哥不能死,中间兄弟不能断;

    索引列上少计算,范围之后全失效;

    LIKE 百分写最右,覆盖索引不写*;

    不等空值还有 OR,索引影响要注意;

    VAR 引号不可丢,SQL 优化有诀窍。


    一般性建议

    1. 对于单键索引,尽量选择针对当前query过滤性更好的索引。

    2. 在选择组合索引的时候,当前Query中过滤性最好的字段在索引字段顺序中,位置越靠前越好。

    3. 在选择组合索引的时候,尽量选择可以能包含当前query中的where子句中更多字段的索引。

    4. 尽可能通过分析统计信息和调整query的写法来达到选择合适索引的目的。

  • 相关阅读:
    How to join (ap invoice distributions all) AP table info with PO Table
    Order Management APIs Oe_Order_Pub
    R12 Oe_Order_Pub API
    物料搬运单
    Process Order API In Order Management(详细)
    ap_invoice_distributions_all与PO表关联问题
    分配用人单位
    oe_order_pub 更改订单行数量,提示此更改的原因未提供或无效
    Order Management APIs
    提前期
  • 原文地址:https://www.cnblogs.com/chaozhengtx/p/14451792.html
Copyright © 2011-2022 走看看