テキスト フィールドの最後の 4 文字を比較したい。
パフォーマンスに関しては、次のことを行う必要があります。
select * from table where col like '%last';
また
select * from table where substr(col,-4)='last';
末尾にワイルドカードを使用すると、インデックスを利用できなくなります。
LIKE '%.edu'
別の方法は、文字列の逆バージョンを別の列に格納し、その逆コンテンツ列にインデックスを付けてから、LIKE (またはより良い方法として、GLOB 関数 [いくつかの SQLite 実装では LIKE() がオーバーライドされているため、これも防止します) を使用することです。 index use ] 探している文字列の逆バージョンを渡します。たとえば、.edu で終わる URL を探している場合、「ude.」で始まる値の逆列を検索します。
オプティマイザーの概要ページのセクション 4 では、LIKE 演算子は のような式を最適化するように設計されていると説明されていcol LIKE 'something that does not begin with a percent sign%'
ます。
どちらのパフォーマンスが優れているかはわかりませんが、最初の方がはるかに読みやすく、パフォーマンスに大きな違いはないと思います。