SQL何时不使用索引

时间:2012-03-01 14:05:28

标签: sql indexing

我有一个表,可以跟踪调度的时隙。这是“锁定”的记录,因此2个用户不会在同一时间段预约约会。

我们在生产中遇到了死锁问题,我注意到这个表有5个索引。

这个表经常读写,但很少有几百行。

5个索引对我来说似乎有些过分。对于1000行以下的表,我认为我根本不需要任何索引。

我的假设是否正确?

TIA

2 个答案:

答案 0 :(得分:2)

快速,经验法则的答案:在相对较小的表(通常少于100,000行)上删除除主键上的唯一索引之外的所有索引。

答案 1 :(得分:0)

索引不会影响锁定。注意,每个写操作也应该改变索引。它可能会有一些性能问题,但不应影响锁定。如果表只有1000行,则可以删除索引。对log1000的迭代并不比迭代超过1000行快得多。

This table is read and written frequently but it would rarely have more than a few hundred rows it.

行锁定是常规情况。有时也会发生死锁。您的数据库提供程序是否处理死锁?它应该自己释放它。可能发生锁定导致您尝试按顺序更新行A,B在1个转码中,第二个事务更新B,A顺序中的行。