2011-08-25 43 views
1

我想比較文本字段的最後4個字符。SQLite Like與Substr

明智的性能,我應該做的:

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

OR

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

另一個考慮:'LIKE'是SQL92標準,我不太確定'SUBSTR'。 –

回答

1

我試着用EXPLAIN查詢之前,看到的虛擬機操作,以及一個與substr()功能有3個以上OP碼比一個有LIKE。這並不意味着它必然會變慢,但它可能是一個跡象。

+0

謝謝Hexa。 – Francisc

1

我不知道它有更好的表現,但第一個是更好的閱讀,我也不會期望在性能上有顯着差異。

+0

謝謝Zento。 – Francisc

2

您將無法使用時,採取指數的優勢兩端,用通配符:

  LIKE '%.edu' 
是反向

另一種方法是將字符串存儲在另一列反轉版本,指數-content列,然後使用LIKE(或更好的GLOB函數[,因爲在幾個SQLite實現中LIKE()已被覆蓋,這也會阻止索引使用]傳遞您要查找的字符串的反轉版本。例如,如果您正在查找以.edu結尾的網址,則可以在「反向」列中搜索以「ude」開頭的值。

+0

謝謝,我會考慮的。 – Francisc

1

The optimizer overview page,section 4,解釋了LIKE操作符被設計用於優化col LIKE 'something that does not begin with a percent sign%'種類的表達式。