含まれる:in(その1) (SQL:13020)

Questions
これから3回にわたってin,exists,joinを用いた【含まれる】の説明を行います。
 実行した結果で得られる結果は同じですが、パフォーマンスに違いが・・・あるかどうかわかりません。
 というのも、昔は in → exist → join と性能が良いことがわかっていたのですが、エンジンの進化とともに、この常識も変わってきているようです。
 どちらにせよ1~2万件程度では気にしなくても良いことかもしれません。※あくまでデータ構造によりけりです

 それではAKBが含まれる/含まれないといった観点で確認していきましょう。対象の確認ですが以下のクエリで事前に行います。
Select * From M_tag Where name Like '%AKB%'
 M_tagのnameに【AKB】の文字が含まれているtagidは5,9,69の3個です。この3個のIDがT_alocateで割り当たっているIDを探します。
in / exist / join の中で最も簡単な inから行います。
 以下のように記述してください。
Select * From T_alocate
 Where 
tagid in 
(
Select 
 tagid 
From M_tag Where 
name Like '%AKB%'
)
Up:2021/08/29
Re:2021/09/11

Appendix
Click!
含まれる!を調べる場合、in が一番わかりやすいです。

 それでは否定形も念のために確認しておきましょう。
といっても、 inの前に not を付けるだけですので、難しさはありません。
Select * From T_alocate
 Where 
tagid not in 
(
Select 
 tagid 
From M_tag Where 
name Like '%AKB%'
)
 なお、inに限りませんが否定形はindexが効かないため利用は差し控えたほうが良いです。
超初級
初級
中級
上級
特殊
演習
超初級
初級
中級
上級
特殊
演習
aaaa