在 MySQL 中,我们几乎每天都会使用“COUNT”函数来帮助我们计算给定查询的行数。每个开发者关于性能的最大困境是使用“COUNT(*)”还是“COUNT(id)”更好。
MySQL 优化器是 MySQL 的关键组件,负责确定执行给定 SQL 查询的最有效方式。这部分在“COUNT”最快的困境中起着关键作用。那么让我们解释一下...
我们创建“users”表,该表将在“first_name”列上有一个索引:
CREATE table users ( id int NOT NULL AUTO_INCREMENT, first_name varchar(256) NOT NULL, PRIMARY KEY (id), INDEX idx_first_name (first_name) );
我们添加几行并运行以下 2 个查询:
EXPLAIN SELECT COUNT(id) FROM users;
EXPLAIN SELECT COUNT(*) FROM users;
当你运行这两个 SQL 查询时,你会注意到它们使用相同的索引,“COUNT(*)”一点也不慢,MySQL 优化器负责这一点,它会在表中找到将要使用的索引。给出最好的表现。在这种情况下,两个查询将以相同的速度返回数据,因为它们使用相同的索引,并且 MySQL 优化器认为该索引是最有效的。
MySQL 优化器会考虑许多有助于选择最佳索引键的参数,以便给定查询尽快返回数据。
通常建议使用“COUNT(*)”,因为它允许 MySQL 优化器选择最有效的方法,而“COUNT(column_name)”在需要仅计算非列的情况下特别有用。特定列中的 NULL 值。了解 MySQL 优化器的工作原理以及如何使用索引对于实现最佳查询性能至关重要。
以上是了解 MySQL 查询优化器:COUNT(id) 与 COUNT(*)的详细内容。更多信息请关注PHP中文网其他相关文章!