实现SQL索引

Ran*_*ish -1 sql sql-server

我正在研究移动应用程序的后端.我已经为应用程序创建了表结构.

如何为创建的表实现索引?我知道SQL中有两种类型的索引.群集和非群集.

我担心的是

  1. 我应该为我的桌子提供什么类型的索引?
  2. 什么是列应该被索引?
  3. 我是否需要为"唯一标识符"类型列应用索引?
  4. 我是否需要为主键列应用​​索引?
  5. 如何评估索引性能?

任何帮助将不胜感激

mar*_*c_s 5

总是建议在你的表上放置一个聚集索引 - 它只会使一切变得更快(参见Kimberly Tripp的博客文章).

一个好的聚集索引是:

  • 狭窄
  • 独特
  • 稳定
  • 不断增加

所以像这样的专栏ID INT IDENTITY是完美的(再次:请参阅Kimberly Tripp的博客文章,了解为什么这些属性对于聚类索引非常重要).

接下来,我会在任何外键列上放置一个非聚集索引.这加速了JOIN和与参照完整性相关的其他操作.

然后停止 - 让你的应用程序运行,观察,测量性能.它是如何表现的?获取配置文件日志以查看执行的查询以及哪些查询在I/O和/或CPU时间上过重.

然后继续并优化这些查询 - 可能会在此处添加索引以加快一两个查询.然后再次观察和测量 - 无限重复.

要了解更多信息 - 请阅读Kimberly Tripp的博客,并在会议上观看她的演讲视频 - 她是SQL Server 索引女王,她的知识和见解是巨大而无价的.阅读她的东西,反思 - 使用它.

  • "让你的应用程序运行,观察,衡量性能" - 好吧,先生. (2认同)