MySql索引排序和位置

时间:2017-05-30 15:58:01

标签: mysql

我想知道MySql如何处理索引优先级。我有下表。

   CREATE TABLE table (
       colum1 VARCHAR(50),
       colum2 VARCHAR(50),
       colum3 ENUM('a', 'b', 'c'),
       PRIMARY KEY(colum1, colum2, colum3)
   );

   CREATE INDEX colum1_idx ON table (colum1);
   CREATE INDEX coloum2_idx ON table (colum2);


    const query = `SELECT * FROM table
                    WHERE colum1 = ?
                    ORDER BY colum2
                    LIMIT ?,?`;

基本上我的PK由所有字段组成(我需要使用INSERT IGNORE),我使用colum1作为WHERE子句和ORDER by colum2进行查询。

我的问题是我应该创建2个不同的索引还是用(colum1和colum2)创建1个索引?

1 个答案:

答案 0 :(得分:0)

感谢@JuanCarlosOpo

我在这里找到答案:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#algorithm_step_2c_order_by_

使用两列的复合索引可以提高性能。

CREATE INDEX colum_idx ON table (colum1,colum2);

非常感谢!