-1
我正在写一个查询,它将通过我的程序在数据库上执行。在该查询中,我使用从客户端发送的值添加了where
子句。在某些值不存在的情况下,我将它留空(即它看起来像select * from tablename where columname like '%%' and columname1 like '%%'
)。这是否会导致任何性能问题?添加where子句(如'%%')会导致任何性能问题?
我正在写一个查询,它将通过我的程序在数据库上执行。在该查询中,我使用从客户端发送的值添加了where
子句。在某些值不存在的情况下,我将它留空(即它看起来像select * from tablename where columname like '%%' and columname1 like '%%'
)。这是否会导致任何性能问题?添加where子句(如'%%')会导致任何性能问题?
回答这个问题的最好方法是通过测试。您应该尝试使用和不使用条件的查询。
添加条件到where
子句可以至少在三个方面影响性能:
如果查询很简单:
select t.*
from t
where col like '%%';
然后前两点是不相关的。第三个有点相关。问题是数据库是否“优化”了like
(因为该模式是通用的)。我不认为它确实如此;它将不得不用col is not null
来代替它。
使用like
有一些开销。我会推测like
的开销远低于首先阅读表的开销。所以,虽然它可能会影响性能,但在一个简单的情况下,效果会相对较小。
请用你正在使用的数据库标记你的问题。 –
根据条件检查内容并构建查询会很复杂吗? – AxelH