我正在编写一个查询,它将通过我的程序在数据库上执行。在该查询中,我添加了一个where
子句,其中包含我从客户端发送的值。在某些值不存在的情况下,我将其留空(即它看起来像select * from tablename where columname like '%%' and columname1 like '%%'
)。这会导致任何性能问题吗?
答案 0 :(得分:3)
回答这个问题的最佳方法是通过测试。你应该尝试使用和不使用条件的查询。
向where
子句添加条件可能会至少以三种方式影响性能:
如果您的查询很简单:
select t.*
from t
where col like '%%';
然后前两点不相关。第三点略有相关性。问题是数据库是否优化"远离like
(因为模式是通用的)。我不认为这样做;它必须用col is not null
替换它。
使用like
会有一些开销。我推测like
的开销远小于首先读取表的开销。因此,虽然它可能会影响性能,但在简单的情况下,效果会相对较小。