![]() |
1
3
如果选择标准确实是唯一的(即最多产生一个结果),那么您将看到通过在该标准所涉及的列(或列)上有一个索引来大幅提高性能。
如果您想要强制唯一性,这甚至不是一个选项,那么您必须
有了这个索引,对唯一条件的查询就可以很好地执行,而不必考虑诸如count(*)、count(id)、count(x)、limit 1等细微的SQL调整。 为了清楚起见,我会写
我将避免限制1,原因有两个:
|
![]() |
2
1
afaik,如果您的id列上有一个索引,那么这两个查询的性能或多或少是相同的。第二个查询在程序中只需要少1行代码,但这也不会对性能产生任何影响。 |
![]() |
3
1
就我个人而言,我通常先从行中选择ID,然后限制为1行。从编码的角度来看,我更喜欢这个。我不必实际检索数据,只需检查返回的行数。
如果我比较速度,我会说在MySQL中不计数会更快。我没有任何证据,但我想MySQL必须获取所有行,然后计算有多少行。尽管如此,在第二次思考时,它也必须在第一个选项中这样做,这样代码就会知道有多少行。但既然你有
|
![]() |
4
1
直观地说,第一个可能更快,因为它可以在找到第一个值时中止表(或索引)扫描。但是您应该检索x而不是id,因为如果引擎在x上使用索引,它不需要转到行实际所在的块。 另一个选择可能是:
它已经返回一个布尔值。 |
![]() |
5
0
通常,您使用
上面将返回重复的名称数量和次数。 如果只希望一个查询得到正确或错误的答案,则可以使用嵌套查询,例如。
如果表中有重复的行,则上面的值应返回true,否则返回false。 |
|
Johnny T · 基于当前值的SQL合并表[重复] 7 月前 |
![]() |
anandyn02 · 按名称连接两个表并分组 1 年前 |
![]() |
David Robie · 删除以XXX开头并符合条件的列 1 年前 |
![]() |
swat · 在同一列上选择SQL语句 1 年前 |
![]() |
Santi · Shadcn/ui选择-当用户选择项目时更改状态 1 年前 |