我在表格中有400万行数据并运行此查询
Select * from B
当我检查cpu使用情况时,此查询获得高CPU使用率。我的问题是如何在这个SQL查询中提高cpu使用率?
答案 0 :(得分:3)
您是否可能读取包含四百万行的报告? 我肯定不会。
如果没有,为什么生成呢?
如果您为了备份目的而倾倒整个表格,可能有更好的方法,特定于您正在使用的DBMS。
如果您不需要所有数据(或者甚至是所有数据),可以使用任何可以限制出现的数据(例如{ {1}}子句限制行和/或更多选择性列选择比where
)应该帮助你,正确的索引也是如此,因此可以加快select *
子句中的条件。如果数据正在通过网络传输,那么尤其为真,您不希望通过网络发送不需要的千兆字节。
如果确实希望同时以正常输出格式显示所有四百万行中的所有列,那么您只需要遭受性能损失。数据库提供了各种有效获取数据的方法,但是,如果你想要这些数据,他们可以做的并不多。
话虽如此,有办法减轻影响,但这取决于你如何设置。一些例子是:
这是我头脑中的两件事,毫无疑问还有其他事情,但是,如果不了解更多细节,很难提出具体建议。
答案 1 :(得分:0)
非常简单地减少你的生成。
限制选择
SELECT TOP (100) * FROM B
包含where子句
SELECT * FROM B WHERE COLA = XXX AND COLB = YYY
指定列
SELECT COLA, COLB, COLC, COLD FROM B WHERE COLA = XXX AND COLB = YYY
或者,如果你必须返回所有400万行。
创建一个视图,填充临时表并设置一个作业,在“停机时间”,半夜等运行,然后从临时表中选择