sql >> データベース >  >> RDS >> Mysql

WHERE句の条件の順序はMySQLのパフォーマンスに影響しますか?

    デモはこちら WHERE句の条件の順序を示すできる 短絡により違いが生じます。次のクエリを実行します:

    -- query #1
    SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;
    
    -- query #2
    SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;
    

    これらの唯一の違いは、ORのオペランドの順序です。 状態。

    myslowfunction 意図的に1秒間スリープし、実行されるたびにログテーブルにエントリを追加するという副作用があります。 2つのクエリを実行したときにログに記録された結果は次のとおりです。

    myslowfunction called for query #1 with value 1
    myslowfunction called for query #1 with value 2
    myslowfunction called for query #2 with value 1
    myslowfunction called for query #2 with value 2
    myslowfunction called for query #2 with value 3
    myslowfunction called for query #2 with value 4
    

    上記は、slow関数がORの左側に表示されると、より多く実行されることを示しています。 他のオペランドが常に真であるとは限らない場合の条件。

    したがって、IMOは質問に対する答えです:

    「時々それができる」です。



    1. MySQLテーブルがUTF-8であり、storageEngine InnoDBがあるかどうかを確認するにはどうすればよいですか?

    2. INSERT INTO...RETURNING-あいまいな列参照

    3. Mysql Duplicate Rows(2列を使用して重複が検出されました)

    4. WM_CONCAT関数に相当するSQLServer