SQL优化功能可以为您的慢SQL提供索引建议、检测因隐式转换,函数等表达式不能使用索引的情况。请大家参考以下几个例子:
1.创建表:
CREATE TABLE `tb1` ( `c1` int(11) NOT NULL, `c2` varchar(32) DEFAULT NULL, `c3` double DEFAULT NULL, KEY `IDX_C2` (`c2`), KEY `IDX_C3` (`c3`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 2.插入数据: insert into `tb1`(`c1`,`c2`,`c3`) values ('1','a1',3.14159), ('2','a2',3.1321), ('3','a3', 3111), ('4','a4', 123), ('5','a5',3.1234), ('6','a6',3.1122), ('7','a7', 4321);============================================================================
例子1(生成索引建议): SQL: SELECT * FROM tb1 where c1 = 1; 建议 : ALTER TABLE tb1 ADD INDEX IDX_C1 (C1) 原因 : C1 = 1 能够筛选出一行数据,我们认为这个字段过滤性比较高,所以推荐在C1上创建索引。 ============================================================================
例子2(检测隐式转换): SQL: SELECT * FROM tb1 where c2 = 1; 建议 : 表达式【tb1.c2 = 1】存在隐式转换,会导致不能使用该列索引,建议使用【tb1.c2 = '1'】。============================================================================
例子3(检测函数): SQL: SELECT * FROM tb1 where ABS(c3) = 123; 建议 : 表达式【ABS(c3)】的索引列使用函数会导致不能使用该列索引,建议改写该表达式。