一个table中总共有60万行数据,
id为主键索引,
hits为点击量,用户每访问一次加1有几个页面会用到select top 50 id,hits from [table] order by hits desc. 由于用到缓存,每分钟数次。但是每个页面都用到update [table] set hits=hits+1 where id=123456 每秒上百次。理论上hits变化频繁,不应该加索引,但是我查看日志发现在用hits排序时有时会出现SQL超时的错误。
我现在有点想加索引,但害怕加了索引后会经常出现update超时的情况。怎么解决这个问题呢?

解决方案 »

  1.   

    有用到排序,可以加上FILLFACTOR
     设置创建索引期间每个索引页的页级别中可用空间的百分比。
     ONLINE 
    --这两个选项加上CREATE NONCLUSTERED INDEX [IX_table] ON [dbo].[table] 
    (
    [hits] DESC
    )WITH (PAD_INDEX = ON, ONLINE = on, FILLFACTOR = 20) ON [PRIMARY]
    GO
      

  2.   

    1、加索引
    2、增加缓存机制,减少UPDATE 次数
      

  3.   

    1、加索引
    2、增加缓存机制,减少UPDATE 次数
      

  4.   

    1、加索引
    2、增加缓存机制,减少UPDATE 次数