1

テキスト フィールドの最後の 4 文字を比較したい。

パフォーマンスに関しては、次のことを行う必要があります。

select * from table where col like '%last';

また

select * from table where substr(col,-4)='last';
4

4 に答える 4

2

末尾にワイルドカードを使用すると、インデックスを利用できなくなります。

          LIKE '%.edu'

別の方法は、文字列の逆バージョンを別の列に格納し、その逆コンテンツ列にインデックスを付けてから、LIKE (またはより良い方法として、GLOB 関数 [いくつかの SQLite 実装では LIKE() がオーバーライドされているため、これも防止します) を使用することです。 index use ] 探している文字列の逆バージョンを渡します。たとえば、.edu で終わる URL を探している場合、「ude.」で始まる値の逆列を検索します。

于 2011-08-31T20:31:25.453 に答える
1

オプティマイザーの概要ページのセクション 4 では、LIKE 演算子は のような式を最適化するように設計されていると説明されていcol LIKE 'something that does not begin with a percent sign%'ます。

于 2011-09-01T11:57:24.510 に答える
1

どちらのパフォーマンスが優れているかはわかりませんが、最初の方がはるかに読みやすく、パフォーマンスに大きな違いはないと思います。

于 2011-08-31T19:44:46.610 に答える