當一個mysql表數據達到百萬,分頁查詢的功能就會十分緩慢
使用組合索引解決問題
根據實際情況業務和表結構來創建對應的組合索引的列
消息表:存儲大量的關於各個用戶的消息 每次查詢消息記錄涉及的數據非常大
所以根據我的分頁查詢業務來創建的索引 效率提升很大
KEY `message_use_limit` (`msg_to`,`chat_type`,`msg_from`,`timestamp`,`id`) USING BTREE,
KEY `message_use_limit2` (`msg_to`,`chat_type`,`timestamp`,`id`) USING BTREE
創建索引的語句
ALTER TABLE table_name ADD INDEX index_name(msg_to,chat_type,msg_from,timestamp,id);
查詢
select * from table_name where msg_to = 1 and chat_type = 1 and msg_from = 2 and timestamp =123456789 limit 100000 50;
通過在where條件中正確的使用組合索引 就可以觸發組合索引 提高效率
根據創建的索引列來作爲查詢的條件 (遵循最左原則 where必須從最左邊的索引開始使用纔有效果)
關於組合索引的具體介紹:
組合索引介紹