mysql表數據已排序好,order by查詢速度會不會更快?
01-26
例如表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如何編譯?