一个表有记录70W,字段数 110,索引10个。这几天我在研究日志问题,当 insert delete update 都要忘索引里面写东西
这样就增加了系统的开销。
首先、我要问一个表有多少个索引,才比较合适二、索引太多会不会影响效率。我现在去测试,大家说说经验

解决方案 »

  1.   

    http://blog.csdn.net/Haiwer/archive/2008/08/25/2826881.aspx
      

  2.   

    索引多的坏处:
    1、insert delete update 都需要更新索引,都有额外开销
    2、insert delete update 可能引起聚集索引数据的页分裂和页搬移
      

  3.   

    1:經常insert delete update 就會產生很多碎片,影響系統性能
      dbcc showcontig
      dbcc indexdefrag
    2: 索引的多少要與系統性能有個平衡
      如果修改性能遠遠大於維護的話,儘量在非必需的列上建立索引
      

  4.   

    一个表有多少个索引,才比较合适 首先要看系统类型,一般OLAP(联机分析处理系统)增删改操作很少,基本可以只要能用上的索引度可以加。OLTP(联机事务处理系统)系统也需要自己估计增删改操作的多少来决定,首先排除用不上的索引,一般一个表用得上和必要的也就3-5个索引,特殊表可以多些
    (只是个人经验)
      

  5.   


    实验归来首先 
    dbcc traceon(3604)  --打开跟踪器
    select * from sysfiles --找到日志id
    dbcc log(database,2) --查看已有日志,在弄之前我收缩了一下日志当前已有日志95条
    我现在对该表插入一个数据
    此时日志有228 条
    228-95=133 该操作产生133条日志我删除了一个索引,这个操作是日志增加到
    1330 条好 我继续插入记录后在 
    dbcc log(database,2) 此时有日志1362
    1362-1330=32 该操作产生32条日志  -- 我日 一下少了怎么多,那多删几个岂不是更快了在删一个索引,这个操作是日志增加到
    2776 条好 我继续插入记录后在 
    dbcc log(database,2) 此时有日志2776 
    2821-2776=45 该操作产生45条日志  -- 我日 又张上来了 o(∩_∩)o...
    继续删 索引 反正有10个呢!日志增加到
    4501
     我继续插入记录后在 
    dbcc log(database,2) 此时有日志4501
    4535-4501=34   --又回来了  晕了 后面的几个索引 删除后都是在30-50之间徘徊
    终于我把10个全删除了
    在插记录 产生58条记录
    16447-16389=58 我日 又多了,而且查询变的非常慢
      

  6.   

    为什么我执行dbcc log(database,2)直接报语法错误?
      

  7.   

    楼住用的是什么数据库阿,
    我用sql 2005
    dbcc log(database,2)这句语法错误
    改称dbcc log(2)没有错误
    但是向表中添加数据,没有增加行数阿,不知道dbcc log(2)是不是查看日志的
    有没有也用2005的阿
      

  8.   

    我用的是2000  database 只是我数据库中的一个库名
      

  9.   

    无语,那你就慢慢建索引吧,索引的建立是要根据你的业务来订的,不是建多少个合适!当你insert delete update的时候也会产生索引碎片,如果你insert delete update业务多的话,可以设置一下页的填充度