到底应该用什么索引呢?

yuanxy 2002-06-29 08:27:22
我有一个数据库他记录非常多,而且经常加记录和查询,请句用哪种索引可以加快速度呢?
...全文
27 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenlj188 2002-07-08
  • 打赏
  • 举报
回复
你用SQL自带的索引向导比较好,然后结合你的应用程序,在查询分析器里再多分析,应该就可以建立高效的索引
duckcn 2002-07-07
  • 打赏
  • 举报
回复
在创建聚集索引之前,应先了解您的数据是如何被访问的。可考虑将聚集索引用于:

包含大量非重复值的列。

使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、< 和 <=。

被连续访问的列。

返回大型结果集的查询。

经常被使用联接或 GROUP BY 子句的查询访问的列;一般来说,这些是外键列。对 ORDER BY 或 GROUP BY 子句中指定的列进行索引,可以使 SQL Server 不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。

OLTP 类型的应用程序,这些程序要求进行非常快速的单行查找(一般通过主键)。应在主键上创建聚集索引。


聚集索引不适用于:

频繁更改的列
这将导致整行移动(因为 SQL Server 必须按物理顺序保留行中的数据值)。这一点要特别注意,因为在大数据量事务处理系统中数据是易失的。

宽键
来自聚集索引的键值由所有非聚集索引作为查找键使用,因此存储在每个非聚集索引的叶条目内。



在创建非聚集索引之前,应先了解您的数据是如何被访问的。可考虑将非聚集索引用于:

包含大量非重复值的列,如姓氏和名字的组合(如果聚集索引用于其它列)。如果只有很少的非重复值,如只有 1 和 0,则大多数查询将不使用索引,因为此时表扫描通常更有效。

不返回大型结果集的查询。

返回精确匹配的查询的搜索条件(WHERE 子句)中经常使用的列。

经常需要联接和分组的决策支持系统应用程序。应在联接和分组操作中使用的列上创建多个非聚集索引,在任何外键列上创建一个聚集索引。

在特定的查询中覆盖一个表中的所有列。这将完全消除对表或聚集索引的访问。

来自联机帮助

主要就是这两类了。
yuanxy 2002-06-29
  • 打赏
  • 举报
回复
用聚集索引、唯一值索引、不重新计算索引、文件组索引。到底哪个好些
CSDNM 2002-06-29
  • 打赏
  • 举报
回复
用经常查询的字段组合做索引。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧