设计更快的SQL查询时,选择整行(选择*)还是仅选择您需要的字段?如果结果被提供给另一个查询(例如自然连接)怎么办?
答案 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;
七次。