作者evernever (Neverever)
看板Database
标题Re: [SQL ] 丛集(cluster)非丛集(noncluster)
时间Wed Apr 14 12:23:33 2010
※ 引述《shiengchyi (上班族之朝九晚六?!)》之铭言:
: 由於目前面临到要处理大量资料(1000w笔),
: 所以在了解关於丛集(cluster)和非丛集(noncluster)的问题,
: 根据我拜请Google大神的结果,
: 一般设定的PKey MSSQL预设是 cluster,每个Table只能有一个(组) PKey,
: 每个Table 也只能有一个cluster index(es),
: 因为cluster index是实际存放在硬体当中的顺序。
: 相较於noncluster index,每个Table 至多可以有 999 个 (By MSDN),
: 针对常用的查询栏位来设定 noncluster index的话,可以有效的增加查询的速度,
: 以上是小弟的了解,以下是用来表达问题的例子:
: Table Map里面有三个栏位:[index](autoIncrease),X,Y;用於纪录某座标发生事件,
: (X,Y)用来表示座标,同一个座标可能发生多个事件,所以增加一个[index]栏位,
: 我的疑问是,我应该三个栏位视为一组Pkey,
: 还是以[index]为PKey,然後将X,Y设定成 ununique noncluster indexes,
: 其目的是为了能够加速资料查询,还请有经验的乡民解惑,感谢 ^^
等推文时间 等得不耐烦了...直接回
=============
怎麽设 index 是看你 query 条件的次数
当然在大多的情况 primary key = cluster index 是最频繁查询的条件
如果你还蛮频繁的查询 x = ? and y = ?, 那把 x,y 设成 non-cluster 是不错的选择
个人觉得 index,x,y 没必要设成 non-cluster, index 已经是 cluster
顶多再把 x,y 设成 non-cluster 即可
一些浅见, 仅供参考
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.170.209.176
1F:→ PsMonkey:XD 打这麽多字用推文的更累吧? XDXD 04/14 13:04
2F:推 blestadsl:请问如果是order by的栏位~设index会不会比较快? 04/14 13:11
3F:推 shiengchyi:感谢解答 ^__^ 04/14 15:58
4F:→ evernever:orderby不确定会比较快,但MSSQL有工具可以分析 忘了叫啥 04/15 06:41
5F:推 blestadsl:分析完是成本n%的那种嘛?...不知道是10%快~还是90%快 04/15 07:13