当一个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必须从最左边的索引开始使用才有效果)
关于组合索引的具体介绍:
组合索引介绍