2017-05-30 108 views
0

我想知道MySql如何處理索引優先級。我有下面的表格。MySql索引排序和Where

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無視),我查詢使用colum1作爲凡colum2子句和ORDER。

我的問題是我應該創建2個不同的索引或與(colum1和colum2)創建1索引?

+1

MySQL index [** TIPS **](http://mysql.rjweb.org/doc.php/index_cookbook_mysql) –

+0

試過解釋了嗎? – Jan

+0

謝謝@JuanCarlosOropeza我在這裏找到了我的答案:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#algorithm_step_2c_order_by_ –

回答

0

由於@JuanCarlosOpo

我在這裏找到了答案:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#algorithm_step_2c_order_by_

它採用採用兩列複合指數更高性能。

CREATE INDEX colum_idx ON table (colum1,colum2);

非常感謝!

+1

您應該總是使用解釋計劃來測試您的查詢。 \t [**如何獲取查詢執行計劃?](http://stackoverflow.com/questions/7359702/how-do-i-obtain-a-query-execution-plan) –

+0

非常感謝你的時間,我會嘗試! –