加速ORDER BY

时间:2012-04-22 21:41:17

标签: mysql

我有一个mysql表,用于存储包含4列的成员消息:

  • message_id(主键,自动递增)
  • sender_id(key)
  • receiver_id(key)
  • MESSAGE_CONTENT

我做了很多SELECT次,我总是按message_id DESC对它们进行排序,查询如下:

SELECT message_content 
FROM table 
WHERE sender_id='3333' 
ORDER BY message_id DESC 
LIMIT 30

在这样的查询中,ORDER BY很昂贵(通常需要对数千行进行排序,每次乘以许多请求时会产生一些负载)

有没有办法避免每次都要对表格进行排序?由于我总是希望以相同的顺序检索结果,并且由于message_id列不会随着时间的推移而改变,如果每个新表行都插入到第一个位置,则表将始终排序,我不需要任何“顺序”通过“” 那可能吗 ?还是有其他解决方案吗?

谢谢

1 个答案:

答案 0 :(得分:4)

  1. 3333指定为整数,而不是字符串(删除引号)
  2. message_id列添加到sender_id索引(如果您使用myisam,因为在innodb中它会被所谓的“clustered index”自动添加)