在我的项目中(在 JAVA 中),我必须从 db 中选择一些数据。如果数据不存在,我将插入它并再次选择它。我做了两个测试:
1.SELECT-INSERT-SELECT 空表中的数据(150 000 行)。
2.SELECT-INSERT-SELECT 数据(150 000 行)来自填充了 500 万行垃圾(未使用)行的表。
在结果中,我看到第二种情况快了 15% 到 25%。
有人可以解释为什么吗?
在我的项目中(在 JAVA 中),我必须从 db 中选择一些数据。如果数据不存在,我将插入它并再次选择它。我做了两个测试:
1.SELECT-INSERT-SELECT 空表中的数据(150 000 行)。
2.SELECT-INSERT-SELECT 数据(150 000 行)来自填充了 500 万行垃圾(未使用)行的表。
在结果中,我看到第二种情况快了 15% 到 25%。
有人可以解释为什么吗?
以上两种情况你查询的是同一张表还是两张不同的表?
如果它们是不同的表,我怀疑第二个表有列索引,而第一个没有。
你运行了多少次这个测试?
我假设 1) 可能由于表增长而变慢。
您可以使用使用 sp_spaceused 监控 thsi
请参阅 http://www.mssqltips.com/sqlservertip/2794/report-to-capture-table-growth-statistics-for-sql-server/