在軟件Navicat中,如何查看執(zhí)行一條SQL語(yǔ)句的耗時(shí)。如select * from table_name where id = '1' 如何查看當(dāng)前的語(yǔ)句耗時(shí)。==============================================================通過(guò)測(cè)試發(fā)下:SELECT * FROM idc_logistics_assign_rules WHERE id = '100';SELECT * FROM idc_logistics_assign_rules WHERE id = '200';//時(shí)間: 0.035sSELECT * FROM idc_logistics_assign_rules WHERE id IN ('100','200')//時(shí)間: 0.020s我的id是主鍵,肯定會(huì)走索引的,那么走索引的查詢應(yīng)該更快啊。使用IN關(guān)鍵字是不走索引的,但是為什么查詢要比兩次主鍵id查詢塊呢?求解釋。
5 回答

斯蒂芬大帝
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
你這里in是走索引的,執(zhí)行下explain SELECT * FROM idc_logistics_assign_rules WHERE id IN ('100','200')
你會(huì)看到索引使用情況,它是有用到索引的。要得到正確點(diǎn)的查詢時(shí)間的話加個(gè) SQL_NO_CACHE
SELECT SQL_NO_CACHE * FROM idc_logistics_assign_rules WHERE id IN ('100','200')
注意
:in用不用索引?根據(jù)情況而定。即根據(jù)是否能夠利用索引而定。當(dāng)in的范圍是聚集索引 in(1,2) 會(huì)被MSSQL自動(dòng)優(yōu)化成id=1 or id=2 ,你可以使用explain看下,他返回的row是2 in(1,2)與id=1 or id=2 explain返回的數(shù)據(jù)都是一樣的。我可以很負(fù)責(zé)的告訴你是有用索引。網(wǎng)上很多提及不走索引的大部分都是舊資料,MSSQL2K以后已經(jīng)優(yōu)化了。
添加回答
舉報(bào)
0/150
提交
取消