我想比較文本字段的最後4個字符。SQLite Like與Substr
明智的性能,我應該做的:
select * from table where col like '%last';
OR
select * from table where substr(col,-4)='last';
我想比較文本字段的最後4個字符。SQLite Like與Substr
明智的性能,我應該做的:
select * from table where col like '%last';
OR
select * from table where substr(col,-4)='last';
我試着用EXPLAIN
查詢之前,看到的虛擬機操作,以及一個與substr()
功能有3個以上OP碼比一個有LIKE
。這並不意味着它必然會變慢,但它可能是一個跡象。
謝謝Hexa。 – Francisc
您將無法使用時,採取指數的優勢兩端,用通配符:
LIKE '%.edu'
是反向
另一種方法是將字符串存儲在另一列反轉版本,指數-content列,然後使用LIKE(或更好的GLOB函數[,因爲在幾個SQLite實現中LIKE()已被覆蓋,這也會阻止索引使用]傳遞您要查找的字符串的反轉版本。例如,如果您正在查找以.edu結尾的網址,則可以在「反向」列中搜索以「ude」開頭的值。
謝謝,我會考慮的。 – Francisc
The optimizer overview page,section 4,解釋了LIKE操作符被設計用於優化col LIKE 'something that does not begin with a percent sign%'
種類的表達式。
另一個考慮:'LIKE'是SQL92標準,我不太確定'SUBSTR'。 –