你最常见的sql优化是什么?

nan*_*nda 32 sql optimization

您使用的最常见的SQL优化是什么?

Guf*_*ffa 35

通过仅返回所需的字段并仅返回所需的行来减少返回的数据量.这是最常见的,因为您为每个返回数据的查询执行此操作.

添加索引.这种情况并不常见,因为某些表不需要除为主键创建的索引之外的任何其他索引.

  • +1仅返回您需要的列 (2认同)

RRU*_*RUZ 30

我最喜欢的提示列表(在此详细说明)如下

  1. 尝试使用WHERE子句限制查询结果集.
  2. 尝试通过仅返回表中的特定列而不是所有表的列来限制查询结果集.
  3. 使用视图和存储过程而不是重载查询.
  4. 尽可能尝试避免使用SQL Server游标.
  5. 如果需要返回总表的行计数,则可以使用替代方法而不是SELECT COUNT(*)语句.
  6. 尽可能尝试使用约束而不是触发器.
  7. 使用表变量而不是临时表.
  8. 尽可能避免使用HAVING子句.
  9. 尽可能避免使用DISTINCT子句.
  10. 在您的存储过程中包含SET NOCOUNT ON语句,以停止指示受T-SQL语句影响的行数的消息.
  11. 如果需要仅返回前n行,请使用带有TOP关键字或SET ROWCOUNT语句的select语句.
  12. 如果需要快速返回'number_rows'行,请使用FAST number_rows表提示.
  13. 尽可能尝试使用UNION ALL语句而不是UNION.
  14. 不要在查询中使用优化程序提示.


Rob*_*ley 8

远远超过:制作覆盖指数

覆盖索引包括查询将需要的所有列,从而避免需要对索引查找的结果进行查找.这将避免系统感觉扫描速度更快(考虑到查找成本,这种速度非常快).

但也值得一提:

有一个允许合并连接的索引.在连接由连接条件排序的两个表时,可以发生MERGE连接.但当然,在说"表"时,我们的意思是'索引',对......

另外 - 删除标量函数和使用表值函数......作为标量函数不能简化.

此外 - 在您知道唯一的列上放置唯一索引,允许查询优化器使用此知识进行更好的优化选择.也适用于NOT NULL约束.

此外 - 在比较已知情况下的字符串时使用二进制排序规则,以便系统不必考虑不同的大小写选项.

我当然可以一整天都去...


nil*_*amo 6

缓存db输出.根本不考虑对数据库施加压力似乎是一种谨慎的优化.

+1 memcached.