2011-08-25 24 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%'种类的表达式。