所以當列上有一個索引,並且你做了一個簡單的SELECT * FROM table WHERE indexed_column = value,那麼這是一個O(1)搜索嗎?索引的內容是整數還是字符串是否重要?確實設置了一個列索引在mysql表中確保O(1)查找?
4
A
回答
5
MySQL的MyISAM或InnoDB存儲引擎中的查找都不是O(1)搜索。那些存儲引擎使用B +樹來實現索引。他們能做的最好的是O(日誌 n)搜索。
MEMORY
存儲引擎默認使用HASH索引類型,以及B +樹索引類型。只有HASH索引可以實現O(1)查找。
無論哪種情況,索引列的數據類型都不會更改它。
欲瞭解更多關於MySQL索引,讀http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html
+0
MySQL使用B-Tree而不是Binary-Tree。它的複雜程度取決於每個節點的條目數量。關於MySQL,這裏描述了這裏(http://use-the-index-luke.com/sql/anatomy/the-tree) –
1
事實並非如此。
MySQL使用B-Trees,如online book中所述。它們的複雜性取決於每個節點的密鑰數量,因此可以比O(log2n)做得更好。
MySQL使用的每個節點的密鑰數取決於question中指出的不同因素。
相關問題
- 1. 在散列表O(1)中查找?
- 2. 確保在承諾的api請求中設置了一個值
- 3. 確定ActiveRecord在查找過程中是否使用了索引?
- 4. 如何爲此MySql查詢設置正確的索引?
- 5. 如何在一個mysql列中查找確切的字符串
- 6. 在MySQL表中正確地編制索引的位置?
- 7. Rethinkdb,Go:確保一個ReQL語句中的表和索引
- 8. 找不到FULLTEXT索引匹配列的列表(索引設置)
- 9. mysql確實ifnull(...)阻礙索引使用?
- 10. 確保MAVEN_HOME設置正確
- 11. MongoDb索引/在列表中查找
- 12. MySQL查詢不正確使用索引?
- 13. MySQL查詢優化:正確索引
- 14. 在索引值後查找列表中非零數字的第一個實例
- 15. 沒能找到一個文檔時,我插入確保索引查詢
- 16. 查找索引子列表
- 17. MySQL - 如何確定要索引的列?
- 18. 在元組列表中查找精確元組匹配並返回其索引
- 19. 如何索引MySQL中的查找表
- 20. 確定索引列
- 21. 在列表中查找電子郵件 - 準確搜索?
- 22. MySQL的:確定正確的索引
- 23. 爲sectionIndexTitlesForTableView正確設置索引
- 24. 設置JavaME列表索引
- 25. 緩慢的查詢mysql沒有找到正確的索引
- 26. 使用另一個列表設置列表的索引
- 27. 我得到了一個IndexError:列表索引超出範圍在sys.argv中[1]
- 28. 在列表中確定位置的正確實施
- 29. 在子查詢中設置一個變量列表 - MYSQL
- 30. 查找出現在另一個列表中的列表元素的索引
潛在的問題是:是什麼使索引查找O(1)操作?這將取決於索引存儲的內部實現,我想... –