我想知道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);
非常感谢!