• MySQL中的索引提示Index Hint


    MySQL数据库支持索引提示(INDEX HINT)显式的高速优化器使用了哪个索引。以下是可能需要用到INDEX HINT的情况

    a)MySQL数据库的优化器错误的选择了某个索引,导致SQL运行很慢。这个在最新版的数据库版本中非常少见。优化器在绝大部分情况下工作的非常有效和正确。

    b)某些SQL语句可以选择的索引非常多,这时优化器选择执行计划时间的开销可能会大于SQL语句本身例如优化器分析Range查询本身就是比较耗时的操作。这时DBA或开发人员分析最优的索引选择,通过index hint来强制使优化器不进行各个路径的成本分析直接选择指定的索引来完成查询

    MySQL数据库的Index Hint语法

    看个表结构

    CREATE TABLE t(
    
    a INT,
    
    b INT,
    
    KEY(a),
    
    KEY(b)
    
    )ENGINE=INNODB;
    
    INSERT INTO t SELECT 1,1;
    
    INSERT INTO t SELECT 1,2;
    
    INSERT INTO t SELECT 2,3;
    
    INSERT INTO t SELECT 2,4;
    
    INSERT INTO t SELECT 1,2;
    
     
    
     

    查看执行计划

    如图SQL语句可以使用a,b索引,实际使用的索引为b,a完成整个查询,列Extra提示Using intersect(b,a)表示根据两个索引得到的结果进行求交的数学运算,最后得到结果

    如果我们使用USE INDEX 的索引来使用a这个索引呢

    EXPLAIN SELECT * FROM t USE INDEX(a) WHERE a=1 AND b=2;

    可以发现,优化器使用了a的索引,但use index只是告诉优化器可以选择该索引,实际上优化器还是会根据自己的判断进行选择,最可靠的做法是FORCE INDEX

  • 相关阅读:
    ExtJS 4.0 改善Ext.grid.plugin.RowEditing (重构,v1.4版本,20110911)
    GeoServer源码解析和扩展 (四)文件系统
    Ext蒙板效果
    Ext Grid表格的自动宽度及高度的实现
    Extjs4用RowEditing对数据进行增加,修改
    ExtJs4.0 Grid分頁詳解
    canvas的处理图片功能
    cookie的设置和读取
    html5的canvas知识
    初学jquery mobile
  • 原文地址:https://www.cnblogs.com/olinux/p/5146757.html
Copyright © 2020-2023  润新知