gpt4 book ai didi

MySQL:SELECT(x) WHERE 与 COUNT WHERE?

转载 作者:行者123 更新时间:2023-11-29 01:25:23 25 4
gpt4 key购买 nike

这将是这些问题之一,但我需要问它。

我有一个大表,可能有也可能没有一个唯一行。因此,我需要一个 MySQL 查询来告诉我 TRUE 或 FALSE。

根据我目前的知识,我看到两个选项(伪代码):

[id = 主键]

选项 1:

SELECT id FROM table WHERE x=1 LIMIT 1
... and then determine in PHP whether a result was returned.

选项 2:

SELECT COUNT(id) FROM table WHERE x=1
... and then just use the count.

出于某种原因,这两种方法是否更可取,或者是否有更好的解决方案?

谢谢。

最佳答案

如果选择标准确实是唯一的(即最多产生一个结果),那么通过在该标准涉及的列(或多列)上建立索引,您将看到巨大的性能改进。

create index my_unique_index on table(x)

如果你想强制唯一性,这甚至不是一个选项,你必须拥有

create unique index my_unique_index on table(x)

有了这个索引,无论诸如 count(*)、count(id)、count(x)、limit 1 等细微的 SQL 调整如何,对唯一条件的查询都将执行得非常好。为了清楚起见,我会写

select count(*) from table where x = ?

出于另外两个原因,我会避免使用 LIMIT 1:

  • 它是非标准 SQL。我对此并不虔诚,在必要时使用 MySQL 特定的东西(即分页数据),但这里没有必要。
  • 如果由于某种原因,您有不止一行数据,这可能是您的应用程序中的一个严重错误。使用 LIMIT 1,您将永远不会发现问题。这就像在侏罗纪公园中计算恐龙,并假设数量可能会减少。

关于MySQL:SELECT(x) WHERE 与 COUNT WHERE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2305002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com