更具体(因为对该主题的一般答案可能是“是”):
我们在Sybase中有一个包含大量数据的表。
其中一列是“插入日期”(日期,日期时间类型)。
表格上的聚集索引以“DATE”开头。
问题:对于另一个非聚集索引,列的顺序(更具体地说,“DATE”是第一个还是第二个索引列)是否影响插入查询性能?
假设其他一切都是平等的,例如the order of the second non-clustered index does not affect select query performance(即使它确实如此,我也不关心这个问题的目的)。
答案 0 :(得分:2)
表格全部页面或数据页面上有什么锁定方案? (你可以通过选择lockscheme('table_name')来找到。使用数据页锁定方案,索引维护的(应用程序观察的)性能要好得多。
订购了一个索引。插入时间取决于维护该订单的成本。如果为索引的列插入具有单调递增值的行,则索引将在“结束时”增长并且性能将很好(由于多个并发更新程序而导致任何并发问题的模数)。索引树必须不时重新平衡,但我相信这是一个快速的操作。
如果插入的顺序与索引的顺序不同,那么该索引必须将条目插入“中间”,这很可能导致页面拆分(以模块为模,通过设置未分配足够的空间)如上所述的填充因子)以及'索引碎片'
无论如何,答案 - 一如既往 - 是进行一些实验并测量经过时间和IO活动。您还可以查看optdiag输出。
pjjH
答案 1 :(得分:0)
我认为它主要取决于指数中的填充因子,以及列的选择性程度要小得多。