三列索引

时间:2017-08-24 14:59:16

标签: mysql indexing query-optimization

我有下表:

  

问题(id,title,user_id,ask_id(可空),created_at)

我有以下三个问题:

  
      
  1. 从user_id =的问题中选择*?按created_at desc排序;
  2.   
  3. 从user_id =的问题中选择*?和created_id不是由created_at desc的null顺序;
  4.   
  5. 从ask_id =的问题中选择*?按created_at desc;
  6. 排序   

优化这些查询的最佳方法是什么? 是否可以使用一个有助于避免使用文件排序的索引?

2 个答案:

答案 0 :(得分:1)

没有。为user_id和ask_id

创建两个不同的索引

答案 1 :(得分:0)

INDEX(user_id, created_at) -- for #1
INDEX(ask_id, created_at) -- for #3

第一个将帮助稍微为#2。

“Filesort”并不像每个人所说的那样邪恶。这只是一个线索,你要么没有最好的索引,要么查询足够复杂要求一种或多种。

如果这是一个大表而你没有真正使用id,我可以建议其他优化。