1

整数列idにインデックスがあるとします。

id一致するレコードを効率的に見つけるにはどうすればよい%789%ですか?

id LIKE '%789%'インデックスを使用できず、パフォーマンスの問題が発生します。

仕事を効率的に行うコツはありますか?

4

2 に答える 2

0

convert(varchar(20), int_column) のような計算列を作成し、それにインデックスを配置できます。int_column に対して LIKE 演算子を使用する場合は、代わりに計算列に対して使用します。

于 2012-04-27T01:24:56.957 に答える
0

パターンが実際にまとめられている (%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

明らかに、キーの範囲が制限されていることがわかっている場合は、比較の数を減らすことができます。

于 2012-04-27T01:37:41.887 に答える