大家都知道聚集索引和非聚集索引
请教一下,一个表结构如下
id int
name varchar(50)
如果在name上建立索引有没有意义???
如果有意义应该建立聚集索引还是非聚集索引???
如果没有意义,请说明原因!!我听说在varchar或char字段上建立索引没有任何意义,是不是这样的???Best Regards & Thanks

解决方案 »

  1.   

    name唯一的话建立索引也没事,一般经常用到的话用聚集索引有助于提高查询性能..
      

  2.   

    聚集索引基于数据行的键值在表内排序和存储这些数据行。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。
    每个表几乎都对列定义聚集索引来实现下列功能: 可用于经常使用的查询。提供高度唯一性。 考虑对具有以下特点的查询使用聚集索引:使用运算符(如 BETWEEN、>、>=、< 和 <=)返回一系列值。
    使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行物理相邻。例如,如果某个查询在一系列销售订单号间检索记录,SalesOrderNumber 列的聚集索引可快速定位包含起始销售订单号的行,然后检索表中所有连续的行,直到检索到最后的销售订单号。返回大型结果集。 使用 JOIN 子句;一般情况下,使用该子句的是外键列。使用 ORDER BY 或 GROUP BY 子句。
    在 ORDER BY 或 GROUP BY 子句中指定的列的索引,可以使数据库引擎 不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。摘录别人的,请参考
      

  3.   

    经常用name来查询的话用聚集索引有助于提高查询性能
      

  4.   

    id int --建议定义成主键,聚集索引
    name varchar(50)--非聚集索引