【发布时间】:2010-11-26 20:05:14
【问题描述】:
我很好奇,在一个文档中我读到它建议对所有查询使用限制 1(如果可用),包括索引列和唯一列。使用 WHERE uniqueCol = val; 时,写入限制 1 是否真的有助于查询? ?
【问题讨论】:
我很好奇,在一个文档中我读到它建议对所有查询使用限制 1(如果可用),包括索引列和唯一列。使用 WHERE uniqueCol = val; 时,写入限制 1 是否真的有助于查询? ?
【问题讨论】:
不,在这些情况下,添加“限制 1”无助于加快您的代码速度。相反,人们这样做的通常原因是作为“保护”因素。这有两种情况可以帮助您:
有时,根据您的数据库设计,您可能认为只有 1 个结果,但如果您选择的列实际上不是唯一列,出于某种奇怪的原因,您可能会得到两个如果未保持数据库完整性,则返回结果。我见过程序员因此在这种情况下使用限制 1,只是为了确保无论如何,当他们只期望返回 1 个结果时,他们只能得到 1 个结果,因此,它不会导致代码失败。
还有安全性。我还看到人们宣扬在查询中设置限制 1 的想法,以使 SQL 注入攻击更难以非常有效。这个想法是,如果有人确实设法进行 SQL 注入,那么他们只会得到“1 个结果”的价值。现在的问题是,在实践中,这很少奏效,因为许多 SQL 注入攻击最终会忽略“行的其余部分”数据。
那么,最后呢?把它放在那里当然不会伤害你。但是,你应该总是这样做并没有一个充分的理由。事实上,我很少自己做,只是因为你可能说服自己的好处是微乎其微的。
【讨论】:
没有。
【讨论】:
否:没有必要将单例集合限制为只有一个元素。
【讨论】: