最喜欢的性能调优技巧

当您有一个需要性能调优的查询或存储过程时,您首先要尝试什么?

请先 登录 后评论

8 个回答

Stu
  • 使用 dbo 为所有表添加前缀。以防止重新编译。
  • 查看查询计划并寻找表/索引扫描。
  • 2005 年,在管理视图中搜索缺失的索引。
请先 登录 后评论
John Christensen

我通常会从连接开始 - 我会一次一个地将它们从查询中剔除,然后重新运行查询以了解是否存在我遇到问题的特定连接.

请先 登录 后评论
csmba

根据您过滤的 clm 为表编制索引

请先 登录 后评论
Andy

本身不一定是 SQL 性能技巧,但肯定相关:

一个好主意是在可能的情况下使用 memcached,因为直接从内存中获取预编译数据而不是从数据库中获取它会快得多。还有一种内置了 memcached 的 MySQL(第三方)。

请先 登录 后评论
Ryan

有时在 SQL Server 中,如果您在 where 子句中使用 OR,它确实会提高性能。而不是使用 OR 只是做两个选择并将它们联合在一起。以 1000 倍的速度获得相同的结果。

请先 登录 后评论
Mike

看看 where 子句 - 验证索引的使用/验证没有做任何愚蠢的事情

where SomeComplicatedFunctionOf(table.Column) = @param --silly
请先 登录 后评论
Seibar

在我所有的临时表上,我喜欢添加唯一约束(在适当的地方)来创建索引和主键(几乎总是)。

declare @temp table(
    RowID int not null identity(1,1) primary key,
    SomeUniqueColumn varchar(25) not null,
    SomeNotUniqueColumn varchar(50) null,
    unique(SomeUniqueColumn)
)
请先 登录 后评论
Barrett Conrad

确保您的索引长度尽可能小。这允许 DB 一次从文件系统中读取更多的键,从而加速您的连接。我认为这适用于所有数据库,但我知道这是对 MySQL 的特定建议。

请先 登录 后评论