我很好奇,在一个文档中我读到它建议在所有查询上使用限制1(如果可用)包括索引列和唯一列。当使用WHERE uniqueCol = val时,写入限制1是否实际上有助于查询; ?
答案 0 :(得分:6)
不,在这些情况下,添加“限制1”无助于加快代码速度。相反,人们这样做的通常原因是作为“保护”因素。有两种情况可以帮助您:
有时,根据您的数据库设计,您可能认为只有1个结果,但如果您选择的列实际上不是一个唯一的列,由于某些奇怪的原因,那么您可能会得到两个如果未保留数据库完整性,则返回结果。我见过程序员因此在这种情况下使用限制1,只是为了确保无论如何,当他们只期待1个结果时,他们只得到1个结果,因此,它不会导致代码失败。 / p>
安全。我也看到人们提出在查询中设置限制1的想法,使SQL注入攻击更加困难。我们的想法是,如果某人确实设法进行SQL注入,那么他们只能获得“1个结果”。现在问题在于,在实践中,这很少有效,因为许多SQL注入攻击最终忽略了数据的“其余部分”。
那么,到底?把它放在那里肯定不会伤到你。但是,为什么你应该总是这样做,这并不是一个坚实的理由。事实上,我自己很少这样做,只是因为你可能会说服自己的好处,而且很少。
答案 1 :(得分:1)
没有。
答案 2 :(得分:0)
否:没有必要将单例集限制为只有一个元素。
答案 3 :(得分:0)
在你的情况下,它不会带来太多好处。
您可能会发现之前关注的讨论Does adding 'LIMIT 1' to MySQL queries make them faster when you know there will only be 1 result?