【发布时间】:2010-11-04 06:32:07
【问题描述】:
在我们的产品中,我们有一个通用搜索引擎,并试图优化搜索性能。查询中使用的许多表都允许空值。我们是否应该重新设计我们的表以禁止空值进行优化?
我们的产品同时在 Oracle 和 MS SQL Server 上运行。
【问题讨论】:
-
Jakob,你在使用 NULL 时遇到过什么样的性能问题?
-
好吧 - 到目前为止没有问题。但我记得我读过一篇关于使用空值时性能降低的文章。因此,我们的团队开始讨论是否应该允许空值 - 我们还没有得出任何结论。我们有一些非常庞大的表,其中包含数百万行和很多客户,所以这对项目来说是一个很大的变化。但是客户提出了关于搜索引擎性能的问题。
-
如果您在搜索引擎中遇到性能问题,我会在消除空值之前查看许多其他地方。从索引开始,查看执行计划以了解实际发生的情况。看看你的 where 子句,看看它们是否是 sargeable。看看你返回的内容,你是否使用了 select * (如果你有一个连接,对性能不利,因为至少重复一个字段从而浪费网络资源),你是否使用子查询而不是连接?你用过游标吗? where 子句是否足够排他?您是否对第一个字符使用了通配符?不断地不断。
标签: sql database oracle database-performance query-performance