作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这将是这些问题之一,但我需要问它。
我有一个大表,可能有也可能没有一个唯一行。因此,我需要一个 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:
关于MySQL:SELECT(x) WHERE 与 COUNT WHERE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2305002/
我是一名优秀的程序员,十分优秀!