Mysql 加速订货

Mysql 加速订货,mysql,Mysql,我有一个mysql表,它用4列存储成员消息: 消息id(主键,自动递增) 发送者id(密钥) 接收器id(钥匙) 信息内容 我做了大量的选择s,我总是按照message\u id DESC对它们进行排序,查询如下: SELECT message_content FROM table WHERE sender_id='3333' ORDER BY message_id DESC LIMIT 30 在这样的查询中,orderby代价很高(它通常需要对数千行进行排序,这在每秒乘以许多请求

我有一个mysql表,它用4列存储成员消息:

  • 消息id(主键,自动递增)
  • 发送者id(密钥)
  • 接收器id(钥匙)
  • 信息内容
我做了大量的
选择
s,我总是按照
message\u id DESC
对它们进行排序,查询如下:

SELECT message_content 
FROM table 
WHERE sender_id='3333' 
ORDER BY message_id DESC 
LIMIT 30
在这样的查询中,
orderby
代价很高(它通常需要对数千行进行排序,这在每秒乘以许多请求时会产生一些负载)

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

多谢各位

  • 3333
    指定为整数,而不是字符串(删除引号)
  • message\u id
    列添加到
    sender\u id
    索引中(如果使用myisam,因为在innodb中它是由所谓的“”自动添加的)
  • 3333
    指定为整数,而不是字符串(删除引号)
  • message\u id
    列添加到
    sender\u id
    索引中(如果使用myisam,因为在innodb中它是由所谓的“”自动添加的)

  • 仅供参考:对于RDBMS来说,数千行通常是儿童游戏。索引几乎总是性能问题的答案。仅供参考:对于RDBMS来说,数千行通常是小菜一碟。索引几乎总是性能问题的答案。谢谢。将3333指定为整数是否会提高性能?或者没有引号还有其他原因吗?message_id已经是主键了,所以重新为它编制索引可能不会有多大帮助。@Marc B:如果他使用innodb就好了。但事实上,我完全忘记了it@Eric:有时会导致“奇怪”behaviour@Eric:因此,将
    message\u id
    添加到
    sender\u id
    索引应该会有所帮助。谢谢。将3333指定为整数是否会提高性能?或者没有引号还有其他原因吗?message_id已经是主键了,所以重新为它编制索引可能不会有多大帮助。@Marc B:如果他使用innodb就好了。但事实上,我完全忘记了it@Eric:有时会导致“奇怪”behaviour@Eric:因此,将
    message\u id
    添加到
    sender\u id
    索引应该会有所帮助。