?SQL優(yōu)化功能可以為您的慢SQL提供索引建議硬萍、檢測(cè)因隱式轉(zhuǎn)換铆铆,函數(shù)等表達(dá)式不能使用索引的情況。請(qǐng)大家參考以下幾個(gè)例子:
?? ? ?1.創(chuàng)建表:? ? ??
? 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.插入數(shù)據(jù):? ? ? ? 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 能夠篩選出一行數(shù)據(jù)丹喻,我們認(rèn)為這個(gè)字段過濾性比較高薄货,所以推薦在C1上創(chuàng)建索引。 ============================================================================? ? ?
?例子2(檢測(cè)隱式轉(zhuǎn)換):? ? ? SQL:? SELECT * FROM tb1 where c2 = 1;? ? ? 建議 :? ? 表達(dá)式【tb1.c2 = 1】存在隱式轉(zhuǎn)換碍论,會(huì)導(dǎo)致不能使用該列索引谅猾,建議使用【tb1.c2 = '1'】。============================================================================? ? ?
?例子3(檢測(cè)函數(shù)):? ? ? SQL:? SELECT * FROM tb1 where ABS(c3) = 123;? ? ? 建議 :? ? 表達(dá)式【ABS(c3)】的索引列使用函數(shù)會(huì)導(dǎo)致不能使用該列索引,建議改寫該表達(dá)式鳍悠。