整数列id
にインデックスがあるとします。
id
一致するレコードを効率的に見つけるにはどうすればよい%789%
ですか?
id LIKE '%789%'
インデックスを使用できず、パフォーマンスの問題が発生します。
仕事を効率的に行うコツはありますか?
整数列id
にインデックスがあるとします。
id
一致するレコードを効率的に見つけるにはどうすればよい%789%
ですか?
id LIKE '%789%'
インデックスを使用できず、パフォーマンスの問題が発生します。
仕事を効率的に行うコツはありますか?
convert(varchar(20), int_column) のような計算列を作成し、それにインデックスを配置できます。int_column に対して LIKE 演算子を使用する場合は、代わりに計算列に対して使用します。
パターンが実際にまとめられている (%4%5%6% のようなものではない) 場合は、パターンを対応する整数比較に拡張することを検討してください。それはあなたのコードを本当に爆発させますが、実際の検索をかなりスピードアップするはずです.
試す:
mod( id, 1000 ) = 789 or
(7890 <= mod( id, 10000 ) and mod( id, 10000 ) < 7900) or
(78900 <= mod( id, 100000 ) and mod( id, 100000 ) < 79000) or
(789000 <= mod( id, 1000000 ) and mod( id, 1000000 ) < 790000) or
...
(789000000 <= mod( id, 1000000000 ) and mod( id, 1000000000 ) < 790000000
明らかに、キーの範囲が制限されていることがわかっている場合は、比較の数を減らすことができます。