mysql列顺序是否会影响查询性能?

时间:2015-12-26 10:28:33

标签: mysql indexing

有一个表foo,它有user_idstatus列以及其他列,user_idstatus都已编入索引,例如

key idx_status (status)
key idx_user_id (user_id)

count(distinct user_id)超过count(distinct status)

现在我想执行一个sql,例如

select * from foo where status = '00' and user_id = 100000 ;

我的同事建议我将user_id放在status之前的sql条件中。他说如果是这样,sql将首先使用idx_user_id然后使用idx_status,显然性能会更好。

但是我不确定,我认为无论sql条件的顺序如何,mysql都会优化它。所以我认为条件的顺序可以任意。

哪个是对的? 顺便说一句,我解释了sqls并没有找到任何差异,两者都是:

         id: 1
  select_type: SIMPLE
    table: foo
     type: ref
possible_keys: idx_status,idx_userid
      key: idx_userid
  key_len: 123
      ref: const
     rows: 7
 filtered: 100.00
    Extra: Using index condition; Using where

1 个答案:

答案 0 :(得分:2)

Mysql将重写查询以使用最具选择性的索引(在您的情况下为idx_userid)。您在EXPLAIN的结果中看到了这一点。

但是,对于查询,最好有一个复合(user_id,status)索引。