我有一个mysql表,用于存储包含4列的成员消息:
我做了很多SELECT
次,我总是按message_id DESC
对它们进行排序,查询如下:
SELECT message_content
FROM table
WHERE sender_id='3333'
ORDER BY message_id DESC
LIMIT 30
在这样的查询中,ORDER BY
很昂贵(通常需要对数千行进行排序,每次乘以许多请求时会产生一些负载)
有没有办法避免每次都要对表格进行排序?由于我总是希望以相同的顺序检索结果,并且由于message_id列不会随着时间的推移而改变,如果每个新表行都插入到第一个位置,则表将始终排序,我不需要任何“顺序”通过“” 那可能吗 ?还是有其他解决方案吗?
谢谢
答案 0 :(得分:4)
3333
指定为整数,而不是字符串(删除引号)message_id
列添加到sender_id
索引(如果您使用myisam,因为在innodb中它会被所谓的“clustered index”自动添加)