2017-05-30 18 views
0

MySqlがインデックスの優先順位をどのように処理するかを知りたいと思います。私は次の表を持っています。MySqlインデックスSortおよび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は、すべてのフィールドで構成されており(IはINSERT IGNOREを使用する必要があります)と私は、クエリcolum2によってWHERE句とORDERとしてcolum1使用しています。

私は2つの異なるインデックスを作成するか、(colum1とcolum2)で1つのインデックスを作成する必要がありますか? @JuanCarlosOpo

+1

MySQLインデックス[** 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

おかげで私はここで答えを見つける: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

ありがとうあなたの時間、私はそれを試みる! –

関連する問題