搜尋

首頁  >  問答  >  主體

java - navicat中如何查看执行一条SQL语句的耗时

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

高洛峰高洛峰2820 天前886

全部回覆(5)我來回復

  • 巴扎黑

    巴扎黑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以後已經優化了。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:52:29

    我這個navicat是在最底下一排

    回覆
    0
  • 怪我咯

    怪我咯2017-04-18 09:52:29

    差點就可以說成 到处都是

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:52:29

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

    回覆
    0
  • PHPz

    PHPz2017-04-18 09:52:29

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

    回覆
    0
  • 取消回覆