一个关于聚集索引和非聚集索引的问题

mgslovedreamsgogo 2006-11-23 12:13:35
大家都知道聚集索引和非聚集索引
请教一下,一个表结构如下
id int
name varchar(50)
如果在name上建立索引有没有意义???
如果有意义应该建立聚集索引还是非聚集索引???
如果没有意义,请说明原因!!

我听说在varchar或char字段上建立索引没有任何意义,是不是这样的???

Best Regards & Thanks
...全文
171 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mgslovedreamsgogo 2006-11-23
  • 打赏
  • 举报
回复
UP
caixia615 2006-11-23
  • 打赏
  • 举报
回复
name唯一的话建立索引也没事,一般经常用到的话用聚集索引有助于提高查询性能..
marco08 2006-11-23
  • 打赏
  • 举报
回复
id int --建议定义成主键,聚集索引
name varchar(50)--非聚集索引
real_name 2006-11-23
  • 打赏
  • 举报
回复
经常用name来查询的话用聚集索引有助于提高查询性能
zzz1975 2006-11-23
  • 打赏
  • 举报
回复
聚集索引基于数据行的键值在表内排序和存储这些数据行。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。
每个表几乎都对列定义聚集索引来实现下列功能:

可用于经常使用的查询。

提供高度唯一性。

考虑对具有以下特点的查询使用聚集索引:

使用运算符(如 BETWEEN、>、>=、< 和 <=)返回一系列值。
使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行物理相邻。例如,如果某个查询在一系列销售订单号间检索记录,SalesOrderNumber 列的聚集索引可快速定位包含起始销售订单号的行,然后检索表中所有连续的行,直到检索到最后的销售订单号。

返回大型结果集。

使用 JOIN 子句;一般情况下,使用该子句的是外键列。

使用 ORDER BY 或 GROUP BY 子句。
在 ORDER BY 或 GROUP BY 子句中指定的列的索引,可以使数据库引擎 不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。

摘录别人的,请参考
mgslovedreamsgogo 2006-11-23
  • 打赏
  • 举报
回复
能在详细一点吗??
有点疑惑

34,590

社区成员

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

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