在设计SQL查询时,选择整行(select *)还是只选择所需的字段会更快?如果结果反馈给另一个查询(例如自然连接)会怎么样?简单的SQL查询性能问题
1
A
回答
7
只选择你需要的字段通常会更快 - 特别是如果这些字段被索引“覆盖”,以便数据库只需要从索引而不是从主表中加载数据(从而允许它获取更少的页面)。
3
只选择你所需要的更快,这适用于列和where子句。
0
选择你需要的字段更快,因为它带来的数据更少。这是提高查询性能速度的一般建议。
-2
如果您多次访问表格,选择所有列的速度会更快,并且具有更多硬解析的开销比选择更多列的开销要大。
E.g.可以说你有一个表foobar列a..c,所有的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;
七次慢。
1
在将来添加列时,SELECT *会特别危险。假设你有一个需要UserID和LastLogon日期的例程。最后你在桌面上添加一个UserNotes文本列和Bang!这个小程序现在也会拉动一些文本数据,整个应用程序的性能将会下降,并且整个应用程序中的每个Select语句都需要修复才能解决问题!
只需选择应用程序需要的列:)
相关问题
- 1. SqL查询性能问题
- 2. SQL查询简单的问题
- 3. 简单的SQL查询问题
- 4. 简单的SQL问题与子查询
- 5. 简单的sql查询问题
- 6. CTE SQL Server查询的性能问题
- 7. Azure的SQL查询性能问题
- 8. 简单ASP查询问题
- 9. MySql查询简单问题
- 10. T-SQL查询超时/性能问题
- 11. SQL连接查询性能问题
- 12. SQL Server查询性能问题
- 13. 涉及子查询的SQL Server查询 - 性能问题
- 14. 查询性能问题
- 15. 查询性能问题
- 16. 查询性能问题
- 17. Oracle查询性能问题
- 18. SQL单查询问题
- 19. “简单”SQL查询
- 20. 访问中的简单SQL查询
- 21. SQL查询性能问题(多子查询)
- 22. 问题的SQL语法(可能简单)
- 23. 简单的MySQL查询问题
- 24. 简单的SELECT查询问题
- 25. 简单的MySQL查询问题
- 26. 简单的MYSQL查询问题
- 27. 简单LINQ的动态查询问题
- 28. 简单的MySQL问题:空值查询
- 29. SQL查询(可能很简单)
- 30. 简单查询性能不佳
我会谨慎对待有关WHERE子句的一般性陈述。可能会出现边界情况,使WHERE子句导致非常奇怪的访问路径,这可能比读取整个表更慢。我不认为这会发生在限制列。 – Thilo 2009-11-12 09:21:02
一致。但总的来说,限制返回的数据是一种更好的方法。 – 2009-11-12 09:33:53