假设我想检查MySQL表中的记录是否存在.我运行一个查询,检查返回的行数.如果0行执行此操作,否则执行此操作.
SELECT * FROM table WHERE id=5 SELECT id FROM table WHERE id=5
这两个查询之间有什么不同吗?是否花费了返回每一列,或者是否花费了过滤掉我们不关心的列?
SELECT COUNT(*) FROM table WHERE id=5
这是一个全新的问题.服务器是否会获取所有值然后计算值(比平时更难),或者它是否会费心抓取任何东西并且每次找到匹配时都会增加变量(比平时更容易)?
我想我对MySQL的工作方式做了很多错误的假设,但这就是问题的关键所在!我哪里错了?教育我,Stack Overflow!
优化器非常聪明(通常).他们通常只抓住他们需要的东西,所以我会选择:
SELECT COUNT(1) FROM mytable WHERE id = 5