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

MySQLのパラメータを使用してクエリを説明するにはどうすればよいですか

    イコールのみを実行している限り(短絡に影響を与える可能性のあるライクではない)、値に置き換えるだけです:

    EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';
    

    実際にはクエリを実行していないため、結果は実際と変わらないはずです。これが当てはまらない場合があります(すでにLIKEについて説明しました)。 LIKEのさまざまなケースの例を次に示します。 :

    SELECT * FROM a WHERE a.foo LIKE ?
    
    1. Param 1 ==Foo -インデックスが存在する場合は、インデックススキャンを使用できます。
    2. Param 1 ==%Foo -インデックスが存在する場合でも、全表スキャンが必要です
    3. Param 1 ==Foo% -インデックスのカーディナリティやその他の要因に応じて、インデックススキャンを使用する場合があります

    参加している場合、where句は不可能な組み合わせになります(したがって、短絡します)。例:

    SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?
    

    1番目と2番目のパラメーターが同じである場合、実行プランは1つであり、それらが異なる場合、短絡します(そして、データにヒットせずに0行を返します)...

    他にもありますが、今私が考えることができるのはそれだけです...



    1. 解決方法がmysqlクエリのGROUPBYエラーに含まれていません

    2. Oracle:null行と非null行をカウントする方法

    3. MysqlDBからJFreechartTimeSeriesCollectionにデータを入力しますか?

    4. MySQLで今日からレコードを取得する方法