mysql表數據已排序好,order by查詢速度會不會更快?

例如表table1 表記錄的orderId 欄位已按 1,2,3,4,5,6 排序好,那麼 select * from table1 order by odrderId; 查詢速度會不會比沒有排序快?


不會,order by只能用index來加速。


一般來說,正如樓上各位所說的,不會。但是不過你的數據按順序存儲(cluster index),且你的查詢是讀了一大塊連續的數據,那麼IO會快不少。


我覺得的速度會快很多。上圖說明:

這是我用order by 主鍵cid,查詢50條數據,用時14ms。用EXPLAIN執行,發現rows=100。

和上面是同樣的sql語句,只是缺少了一個order by 主鍵。結果執行時間為380毫秒。用EXPLAIN執行發現rows=19W之多。而且是type為ALL。

從上面的事例來看,order by到底有沒有用,一目了然,前提是,你的order by 必須是索引

具體參考mysql官方的ORDERY BY 優化文檔 https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html

這是阿里雲的雲資料庫執行的結果。由於企業內部的資料庫,所以資料庫的表名和資料庫名我隱去。對此有疑問,自己可以自行測試。


已經有很多人告訴你答案了。

說另外被忽略的事,雖然你看上去數據都是順序的,但其實他們在硬碟存儲的空間或mysql自己管理的空間展現的可能並不是順序的。


where order by 要有索引才快


並不會,因為雖然在你看來他是按照順序物理排列的,但實際上order by 不知道啊

你要,你要告訴人家你要啊


推薦閱讀:

R markdown 連接mysql數據
一觸即發,2017年,資料庫世界的諸神之戰
mysql注入篇
phxsql如何編譯?

TAG:MySQL | 資料庫性能 |