错,设为cluster聚集 是查询快 ,对delete和insert比较慢.

解决方案 »

  1.   

    zjcxc(邹建) ( ) ,SQL的帮助:
    ——————
    在 Microsoft® SQL Server™ 数据库中可以创建聚集索引。在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。聚集索引通常可加快 UPDATE 和 DELETE 操作的速度,因为这两个操作需要读取大量的数据。
    ————————————
      

  2.   

    关于填充因子:较小的 fill factor 值将导致 SQL Server 以不饱满的页面创建新索引。例如,将 fill factor 值设置为10 对于想在一个最终将保持较少数据的表上创建索引是合适的。越小的 fill factor 值将导致每一个索引占用更多的存储空间,但同时也允许以后可不进行页面拆分进行插入操作。如果设置 fill factor 值为 100,SQL Server 以100% 的饱满度创建聚集和非聚集索引。设置 fill factor 的值为 100 仅对只读表是合适的,因为数据从来不被添加到此类表中。
      

  3.   

    若表有cluster聚集索引,会降低delete和insert数据的效率,update该键值也会降低效率
      

  4.   

    聚集索引通常可加快 UPDATE 和 DELETE 操作的速度,因为这两个操作需要读取大量的数据注意通常二字,同意注意后面的说明:这两个操作需要读取大量的数据
    --------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^在你的数据被删除更新后,聚集索引要重新组织数据的存储顺序,所以如果你是频繁的/或者是大量的 update和delete ,结果你自己也猜得出来吧?如果你不是经常的,只是从大量的数据中,找一些满足条件的数据来处理,这种情况可以加快操作的速度,是指你检索的找满足条件数据的速度被提高了,总的处理速度可能会因此提高.
      

  5.   

    zjcxc(邹建) ( ),那是不是说,索引必须建立在 查询操作时SQL条件语句作用的列上,比如select * from A where id=...  就在id列上建立索引。如果在其他列上建立索引,对这个查询语句起不到加速作用,是不是这样?
      

  6.   

    索引目的就是要提高数据检索速度嘛,当然应该"建立在 查询操作时SQL条件语句作用的列上"
      

  7.   

    那么,如果不选择聚集的话,是否就不会重新组织数据的存储顺序,对频繁的delete和insert就不会有什么影响了,是这样吗?  那我在有频繁delete和insert情况下,建立一般的索引(因为delete时会查询大量数据),可以加快整体速度吗》
      

  8.   

    索引对数据处理都是有影响的,只不过非聚集索引的影响很小而已所以索引不能乱建,应该仅建立在需要的列上.有频繁delete和insert情况下,建立一般的索引(因为delete时会查询大量数据),可以加快整体速度吗》
    应该是可以的
      

  9.   

    谢谢 邹师傅!还有一点疑问,我这个频繁delete动作 是用 delete from table A where timebegin>=... and timebegin<... 来实现的。但是,这timebegin字段的值不具有唯一性。  那么,我还能在timebegin上建立索引吗?
      

  10.   

    那以你看,
    ——————
    还有一点疑问,我这个频繁delete动作 是用 delete from table A where timebegin>=... and timebegin<... 来实现的。但是,这timebegin字段的值不具有唯一性。
    ————————这样做索引是否有用?