【发布时间】:2011-03-30 00:36:55
【问题描述】:
我的表中有一个文本数据类型的字段。
以下两个sql查询的性能是否有差异:
select * from tablename where fieldname="xyz%";
select * from tablename where fieldname="%zyx";
如果我们要实现这些查询的执行,我认为我们需要这样做:
我们必须匹配两个正则表达式(xyz* 和 *zyx)。
我们必须从头开始检查字符串字符。
对于第一个查询,我们必须读取前三个字符以查看是否匹配,但对于第二个查询,我们必须读取直到我们得到字符串的结尾以确定是否发生匹配。但是,如果我们将字符串的长度存储在某个地方,我们可以直接读取最后三个字符,从而获得与第一种情况类似的性能。
我的问题是 mysql 和 oracle 等商业数据库在执行查询时的性能是否存在差异。
【问题讨论】:
-
请问,为什么要匹配这两个正则表达式?
-
只是我脑海中闪过的一个想法。我认为这是我所说的一个非常普遍的用例。
-
恰恰相反,这是我们非常不寻常的用户案例。如果需要这两种正则表达式,您可以肯定地说他们的数据库模式是错误的。可能是数据应该分成不同的列。
标签: sql mysql performance oracle string-matching