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

SQLIN句は個々のクエリよりも遅い

    これはMySQLの既知の欠陥です。

    UNIONを使用することはよくあることです 表示されているような範囲クエリよりもパフォーマンスが優れています。 MySQLは、IN (...)を使用する式にインデックスをあまりインテリジェントに使用しません。 。 ORを使用したブール式のオプティマイザにも同様の穴があります。 。

    httpを参照してください。 ://www.mysqlperformanceblog.com/2006/08/10/using-union-to-implement-loose-index-scan-to-mysql/ いくつかの説明と詳細なベンチマークについて。

    オプティマイザーは常に改善されています。 MySQLの1つのバージョンの欠陥は、次のバージョンで改善される可能性があります。したがって、さまざまなバージョンでクエリをテストする価値があります。

    UNION ALLを使用することも有利です 単にUNIONの代わりに 。どちらのクエリも一時テーブルを使用して結果を保存しますが、違いはUNION DISTINCTを適用します 結果セットに追加され、インデックス付けされていない並べ替えが追加されます。



    1. SQLServerで「WITHRESULTSETS句が1つの結果セットを指定したためにEXECUTEステートメントが失敗しました…」を修正する方法

    2. Java / MySQL SQLファイル全体をmysqlサーバーにどのように挿入しますか?

    3. pl\sqlを使用してclobを1行ずつ読み取る

    4. 主キーを整数からシリアルに変換する方法は?