我想知道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由colum2查询。

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

最佳答案

感谢@JuanCarlosOpo

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

同时使用两列的复合索引,性能更高。

CREATE INDEX colum_idx ON table (colum1,colum2);

非常感谢!

08-16 08:57