在很多场景处理数据时需要判断该数据是否有被关联,是否存在,再以此作为更新、删除等操作的依据,使用count(1) 或者count(*)会进行相关数据全部扫描,但实际情况下只需要有一个数据返回即可。
简易版:
SELECT count(1) from table where column = '**' limit 1
优化版:
SELECT count(1) from (SELECT * from table where column = '**' limit 1) temp
如果表中数据较少时,会直接全表扫描!
优化版有子查询
数据量少的时候直接查询、使用中间表反而更慢
优化版:数据量大的时候中间表有优化效果