我真的需要一张索引吗?

时间:2011-08-20 17:36:26

标签: mysql sql database

我有一个名为brute的表来记录登录期间的错误和内容,并防止显示验证码的暴力攻击。

它包含以下字段:domainiptime

  • 删除基于time字段。 例如:删除超过1天的所有条目。

  • 选择需要所有三列来检测可能的攻击。 ex:在不到10分钟的时间内登录ip xxxx的5个条目(错误)。

问题是:我真的需要一个索引(主要与否)?有些朋友告诉我需要,但感觉没必要。

obs: I've stumbled in similar questions around here. Although helpful, they couldn't solve my question entirely for this case.谢谢(:

4 个答案:

答案 0 :(得分:2)

除了Oded所提到的,如果该网站将面向互联网(它看起来会是这样),我建议您添加索引,因为该表可能变得非常非常大。特别是在互联网上的一些讨厌的东西爬行你的网站并开始尝试猜测登录。

答案 1 :(得分:1)

在某些情况下,批量删除操作的索引(B-Tree)的重组可能比顺序扫描更昂贵。性能成为一个问题,您应该尝试添加索引并测量所需的时间。如果没有索引,则必须读取和过滤所有数据(通过where子句,顺序扫描),但无需额外成本。  重组索引。

答案 2 :(得分:1)

减少表上索引的数量确实会提高写入性能。

问题是,您所做的查询是否会受到索引的帮助 - 这取决于几个方面:

  • 你桌子的大小
  • 所述查询的时间要求
  • 索引是否有助于查询

我建议拿一个样本表并运行测试。使用EXPLAIN来帮助了解索引的使用方式。

答案 3 :(得分:0)

通常,您应该为您排序,查询,更新和删除的列编制索引。