java - navicat中如何查看执行一条SQL语句的耗时
高洛峰
高洛峰 2017-04-18 09:50:29
0
5
846

在软件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查询块呢?求解释。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(5)
巴扎黑

你這裡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以後已經優化了。

伊谢尔伦

我這個navicat是在最底下一排

刘奇

差點就可以說成 到处都是

伊谢尔伦

你的id是int型吧。為什麼查詢的時候,要加單引號

PHPzhong

右下角有查詢時間 以秒為單位

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板