50062


インデックスが  
COL_A  
COL_B  
COL_C  
の列で作成されている時、

[code]

    WHERE
      COL_A || COL_B || COL_C = 'ABC'
    
[/code]

のような検索条件はインデックスが有効利用されるでしょうか。  
また、

[code]

    ORDER BY
      COL_A || COL_B || COL_C ASC
    
[/code]

のような並び替えの場合はどうでしょうか。  
インデックスの効果があるかどうかはRDBによって異なるでしょうか。


CC BY-SA 4.0
2018-11-07T10:43:42.860
50055
2018-11-07T12:09:43.697
3925
question
mysql sql postgresql database oracle
カラムを結合した場合のインデックスの効果


検証したわけではないですが、 No だと思います。

というのも、例えば mysql データベースでは、それぞれの select
を実行する時に、各読み込む必要があるテーブルに対してどのインデックスでアクセスしたらいいかを決定して、その通りに InnoDB
から読むというような動作をします。(そして where
条件に合致しないものを片っ端から落としていく)その時に複数方法でのインデックスアクセスを許容するような構造をしていないと思っていて、 explain
などのフォーマット的にも、多分そのようなことは無理なのではないかと思っています。


CC BY-SA 4.0
2018-11-07T12:09:43.697
50062
2018-11-07T12:09:43.697
754
50055
answer