我有一個兩列MySQL數據庫。 '鑰匙'和'使用'。 Key是一個字符串,Used是一個整數。是否有一種非常快速的方式來搜索特定的密鑰,然後在具有6000000行數據的巨大MySQL數據庫中返回Use。查詢巨大的MySQL數據庫
回答
您可以通過key
場創建索引使其快速:
CREATE INDEX mytable_key_idx ON mytable (`key`);
實際上,你可以讓它通過創建覆蓋兩個(key, used)
領域的指數讀得更快:
CREATE INDEX mytable_key_used_idx ON mytable (`key`, `used`);
在在這種情況下,MySQL在讀取時可以從索引本身檢索used
值,而不讀取表(僅索引掃描)。但是,如果您有很多寫入活動,覆蓋索引可能會運行得更慢,因爲現在它必須更新索引和實際表。
另一種方法是使用分區表:)。 –
如果key是InnoDB表的集羣關鍵字,則覆蓋索引不是必需的,因爲整個表本身就是索引。 – spencer7593
@SumitGupta:我不認爲分區表在這裏會有什麼優勢。它只會帶來不必要的複雜而沒有明顯的好處。 – mvp
對於規範性的SQL是:
SELECT t.key, t.used FROM mytable t WHERE t.key = 'particularvalue' ;
從
EXPLAIN
SELECT t.key, t.used FROM mytable t WHERE t.key = 'particularvalue' ;
輸出將提供有關訪問計劃的細節,正在考慮是什麼索引等
的輸出從一個
SHOW CREATE TABLE mytable ;
將提供有關表,正在使用的引擎和可用索引以及數據類型的信息。
像這樣的查詢性能低下通常表示一個次優的訪問計劃,或者是因爲合適的索引不可用或未被使用。有時,謂詞中列數據類型和文字數據類型之間的字符集不匹配可能會使索引「由特定查詢不可用」。
- 1. PHP在巨大的數據庫中最快的查詢mysql
- 2. MySql SELECT在巨大的數據庫中查詢性能問題
- 3. Efficeint搜索巨大的MySQL數據庫
- 4. 高效的MySQL查詢巨大的數據集
- 5. MySQL的子查詢巨大的表
- 6. 巨大的性能差異查詢MySQL數據庫與相同的golang片段
- 7. mysql巨大的表查詢優化組
- 8. 查詢MySQL中的巨大表格
- 9. Neo4j巨大的數據庫查詢性能配置
- 10. PHP PDO巨大的數據庫查詢速度優化
- 11. MySQL查詢數據庫大小
- 12. 查詢大型mysql數據庫
- 13. 的MySQL數據庫查詢
- 14. 巨大的SQL查詢
- 15. GAE MapReduce巨大的查詢
- 16. 查詢MySQL數據庫
- 17. MYSQL數據庫IFNULL查詢
- 18. 查詢MySQL數據庫
- 19. 查詢MySQL數據庫
- 20. Mysql數據庫查詢
- 21. mysql查詢數據庫
- 22. 查詢數據庫MySQL
- 23. MySQL數據庫表查詢
- 24. 查詢MySQL數據庫
- 25. 巨大的離線數據庫
- 26. OpenWebAnalytics兩週後的巨大數據庫
- 27. 巨大的數據庫列表
- 28. 巨大的數據庫在oracle中
- 29. 如何加快PHP腳本與巨大的MySQL數據庫
- 30. 數據庫管理的巨大記錄 - MySQL
嘗試在密鑰 –
上創建'index'SHOW CREATE TABLE mytable的輸出將很有用,以確定是否存在合適的索引,並根據正在使用的引擎,使用適當的索引戰略。另外,來自'EXPLAIN SELECT'的輸出將顯示訪問計劃。 – spencer7593