mysql IN FIND_IN_SETコントラスト
989 ワード
FILE_IN_SET IN使用方法の比較
userテーブルデータ
id
name
1
明ちゃん
2
赤ちゃん
3
李さん
クエリーidが1,3のデータ
実行状況のクエリーにexplainコマンドを使用する INコマンド結果
id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra
id
SIMPLE
user
range
PRIMARY
PRIMARY
4
2
Using where
type=rangeインデックス範囲スキャン FIND_IN_SET結果
id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra
id
SIMPLE
user
ALL
3
Using where
type=ALLは全体的にスキャン効率が悪いのでおすすめしません
結論
IN高効率とFIND_IN_SET
userテーブルデータ
id
name
1
明ちゃん
2
赤ちゃん
3
李さん
クエリーidが1,3のデータ
select * from `user` where id in(1,3)
select * from `user` where FIND_IN_SET(id, '1,3')
実行状況のクエリーにexplainコマンドを使用する
explain
select * from `user` where id in(1,3)
id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra
id
SIMPLE
user
range
PRIMARY
PRIMARY
4
2
Using where
type=rangeインデックス範囲スキャン
explain
select * from `user` where FIND_IN_SET(id, '1,3')
id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra
id
SIMPLE
user
ALL
3
Using where
type=ALLは全体的にスキャン効率が悪いのでおすすめしません
結論
IN高効率とFIND_IN_SET