在软件Navicat中,如何查看执行一条SQL语句的耗时。
如select * from table_name where id = '1' 如何查看当前的语句耗时。
==============================================================
通过测试发下:
SELECT * FROM idc_logistics_assign_rules WHERE id = '100';
SELECT * FROM idc_logistics_assign_rules WHERE id = '200';
//时间: 0.035s
SELECT * FROM idc_logistics_assign_rules WHERE id IN ('100','200')
//时间: 0.020s
我的id是主键,肯定会走索引的,那么走索引的查询应该更快啊。使用IN关键字是不走索引的,但是为什么查询要比两次主键id查询块呢?求解释。
巴扎黑2017-04-18 09:52:29
你這裡in是走索引的,執行下explain SELECT * FROM idc_logistics_assign_rules WHERE id IN ('100','200')
你會看到索引使用情況,它是有用到索引的。要得到正確點的查詢時間的話加個 SQL_NO_CACHE
SELECT SQL_NO_CACHE * FROM idc_logistics_assign_rules WHERE id IN ('100','200')
注意
:in用不用索引?根據情況而定。即根據是否能夠利用索引而定。當in的範圍是聚集索引in(1,2) 會被MSSQL自動最佳化成id=1 or id=2 ,你可以使用explain看下,他回傳的row是2 in(1,2)與id=1 or id=2 explain回傳的資料都是一樣的。我可以很負責的告訴你是有用索引。網路上很多提及不走索引的大部分都是舊資料,MSSQL2K以後已經優化了。