日期:2014-05-18  浏览次数:20616 次

SQL中hits(点击量)字段究竟要不要做索引
一个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超时的情况。

怎么解决这个问题呢?

------解决方案--------------------
有用到排序,可以加上

FILLFACTOR
 设置创建索引期间每个索引页的页级别中可用空间的百分比。
 ONLINE 
--这两个选项加上

CREATE NONCLUSTERED INDEX [IX_table] ON [dbo].[table] 
(
[hits] DESC
)WITH (PAD_INDEX = ON, ONLINE = on, FILLFACTOR = 20) ON [PRIMARY]
GO

------解决方案--------------------
1、加索引
2、增加缓存机制,减少UPDATE 次数