就是sql语句里,如果使用了mysql的函数,索引就无效了?所以不推荐在sql里使用函数?

解决方案 »

  1.   

    SQL语句、函数是什么?贴出来
      

  2.   

    我记得老版本应该是,现在应该是分函数的吧 用explain看一下。
      

  3.   

    是的。如果你的语句是 functionName(colname) 或者某些运算 则MYSQL无法使用基于 colName的索引。
      

  4.   


    col varchar(100), index columnwhere left(col,4) = 'aaa' 这种可以使用索引。
      

  5.   


    谢,left很少用,一般都like 'aaa%',
      

  6.   

    #4楼应该都用不上索引了。求反例。col varchar(100), index columnwhere left(col,4) = 'aaa' 这种可以使用索引。====
    错误!这个函数也是不能用索引的。mysql> desc site_quans;
    +--------------+-------------+------+-----+------------+----------------+
    | Field        | Type        | Null | Key | Default    | Extra          |
    +--------------+-------------+------+-----+------------+----------------+
    | id           | int(11)     | NO   | PRI | NULL       | auto_increment |
    | user_quan_id | varchar(9)  | NO   | MUL |            |                |
    | site_quan_id | varchar(20) | NO   | MUL |            |                |
    | site_id      | int(11)     | NO   |     | 0          |                |
    | quan_value   | int(11)     | NO   |     | 0          |                |
    | password     | varchar(30) | NO   |     |            |                |
    | start_date   | date        | NO   |     | 1970-01-01 |                |
    | end_date     | date        | NO   |     | 1970-01-01 |                |
    | status       | tinyint(4)  | NO   |     | 0          |                |
    | quan_type    | tinyint(4)  | NO   |     | 0          |                |
    +--------------+-------------+------+-----+------------+----------------+
    10 rows in set (0.00 sec)mysql> explain select * from site_quans where left(site_quan_id, 4) = 'aaa';
    +----+-------------+------------+------+---------------+------+---------+------+------+-------------+
    | id | select_type | table      | type | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+------------+------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | site_quans | ALL  | NULL          | NULL | NULL    | NULL |    1 | Using where |
    +----+-------------+------------+------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)