简单的SQL查询性能问题

时间:2009-11-12 09:13:59

标签: sql

设计更快的SQL查询时,选择整行(选择*)还是仅选择您需要的字段?如果结果被提供给另一个查询(例如自然连接)怎么办?

5 个答案:

答案 0 :(得分:7)

仅选择您需要的字段通常会更快 - 特别是如果这些字段被索引“覆盖”,那么数据库只需要从索引而不是从主表加载数据(从而允许它获取更少的页面。)

答案 1 :(得分:3)

仅选择您需要的内容更快,适用于列和where子句。

答案 2 :(得分:1)

SELECT *在将来添加列时特别危险。假设您有一个需要UserID和LastLogon日期的例程。最后你将UserNotes TEXT列添加到表中并且Bang!那个小例程现在也会拉动一些(potentailly vaste)文本数据,整个应用程序的性能会恶化,整个应用程序中的每个Select语句都需要修复才能解决问题!

只需选择应用程序所需的列:)

答案 3 :(得分:0)

选择所需的字段更快,因为它带来的数据更少。这是提高查询性能速度的一般建议。

答案 4 :(得分:-2)

如果多次访问表,选择所有列可能会更快,并且拥有更多硬分析的开销大于选择更多列所需的开销。

E.g。假设你有一个带有a..c列的foobar表,所有这些都是CHAR(1);然后是以下的陈述序列

SELECT a,b,c FROM foobar;
SELECT a,b FROM foobar;
SELECT a,c FROM foobar;
SELECT a FROM foobar;
SELECT b,c FROM foobar;
SELECT b FROM foobar;
SELECT c FROM foobar;

可能比执行

SELECT * FROM foobar;
七次。