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

LEFTOUTERJOINを使用してMySQLクエリを最適化しようとしています

    残念ながら、mysql(およびおそらく任意のdbms)は、jobs.status != 331 and ack = 0のような式を最適化できません。 B-Treeは、定数値と等しくないものをすばやく見つけることができる構造ではないためです。したがって、常にフルスキャンを取得できます。

    jobs.status = 331 and ack = 0のようなより良い条件があった場合 (!=を変更したことに注意してください =へ )次に、このクエリを高速化することをお勧めします:

    1. クエリを2に分割し、UNION ALLで結合します
    2. 1つのクエリで置換LEFT JOIN INNER JOINへ (wq.info is not NULL



    1. どちらの結合構文が優れていますか?

    2. [ビデオ]PostgreSQLとのデータ統合

    3. mysqlでTCP/IPを介してUnixソケットを使用する正当な理由はありますか?

    4. 同じ列名を持つ2つのテーブルからのSQLSelectは、nullでない場合にのみ列を返します