增强SQL脚本性能



我需要增强下面的SQL脚本有更好的性能。有什么建议吗?

目的:过滤掉在Table_2中有关键字的Table_1记录。

的例子:

Table_1 have data: "xxxyyyzzz" and "aaabbbccc"
Table_2 have data: "%xxyy%"
Result: "xxxyyyzzz" will be filter out and "aaabbbccc" will be return in query.

统计:

Table_1 with 1,000,000 record
Table_2 with 2,250 record

当前结果:在800秒内返回100条记录

脚本如下:

select * from table_1
minus
select * from table_1 a
where exists
(select 1 from table_2 b
where a.field_1  like b.field_1);

你可以使用join

   select * from table_1 a
   inner join table_2 b on a.field_1  = b.field_1

的优化你可以通过下面的链接:http://www.codeproject.com/Articles/35665/Top-steps-to-optimize-data-access-in-SQL-Serv

这里有两点值得推荐:

  • 反规范化
当数据库变得庞大时,人们倾向于做的一件事是调用反规范化。这是当您将来自多个表的数据存储在一个表中以防止需要执行join时。如果您的应用程序依赖于特定的读取来驱动它,这将非常有用。这是缩放时常用的策略。

如果Denormalization不在考虑范围内,那么优化该查询的另一种更简单的方法是确保在运行joinlike的列上具有索引。为like索引列将产生巨大的影响,您将立即注意到性能的提高。此外,使用SELECT *是非常糟糕的做法,确实会造成性能下降,通过指定您想要返回的列来更改它!

任何其他的优化,我需要一些更多的信息,关于数据,希望它帮助!

最新更新