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 次数