2011-07-28 27 views
8

如果在排序列上有索引,那麼排序是否使用mysql索引?此外還有什麼其他的東西是用於索引?mysql是否使用索引進行排序...

它在列的組合索引和單獨索引中有什麼不同?

+0

[Order By Optimization](http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html) – Jacob

+0

使用索引在mysql中排序並不重要,因爲在列上添加索引用於分類。請閱讀: https://www.percona.com/blog/2006/09/01/mysql-order-by-limit-performance-optimization/ http://dev.mysql.com/doc/refman /5.7/en/order-by-optimization.html 此外,mysql只能爲每個查詢使用1個索引,以便明智地進行索引。 –

回答

19

是的,MySQL使用您的索引排序信息,當訂單是由排序的列。另外,如果您在SELECT子句中添加了所有列中的索引,MySQL將不會從表本身加載數據,而是從索引(這更快)加載數據。

合併和單獨的索引之間的區別是,MySQL不能每次查詢使用超過一個指數,因此,如果多列的查詢過濾器和你想有它正確索引你需要創建一個所有列的組合索引。

但是在向表中添加大量索引之前,請記住每個索引都會使插入/更新/刪除操作變慢。

我也強烈建議High Performance MySQL該書由O'Reilly將在深度覆蓋所有的這些問題和許多其他提示你需要的知道真正能夠使用MySQL到了極限。

+0

謝謝你回答我所有的問題.... 1投票和選定的答案給你。 – Anush

+1

如果MySQL優化器加速查詢,它會合並不同的索引,因此MySQL可以使用多個索引進行單個查詢,至少在最新版本中。 – Kiran

1

索引不僅用於排序,還用於選擇。

E.g.如果有的話,select * from mytable where id = 1將在id列上使用索引。

相關問題