gpt4 book ai didi

MySQL SELECT 1 vs SELECT `field_id` AND COUNT 1 vs COUNT (*) or COUNT (`field_id` ) 性能明智

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:12 30 4
gpt4 key购买 nike

我有一个非常简单的问题。我想知道某个数据库行是否存在。

我通常使用:

SELECT 1 FROM `my_table` WHERE `field_x` = 'something'

然后我获取结果:

$row = self::$QueryObject->fetch();

并检查是否有任何结果:

if(isset($row[1]) === true){
return(true);
}

你也可以这样做:

COUNT 1 FROM `my_table` WHERE `field_x` = 'something'

并且类似于COUNT * FROMmy_tableCOUNT field_id FROM `my_table

但我想知道..这与性能有什么关系?

使用 SELECT 1COUNT 1 有什么缺点吗?我的感觉是选择 INTEGER 1 意味着最低负载。

但这真的是真的吗??

谁能教教我?

最佳答案

实际上,您所有的解决方案都不是最优的 :) 您对查询所做的是读取要找到的每一行,即使您添加了 limit。这样做:

SELECT EXISTS ( SELECT 1 FROM `my_table` WHERE `field_x` = 'something');

EXISTS 如果找到,则返回 1,否则返回 0。一旦找到条目,它就会停止搜索。您在子查询中选择什么并不重要,您甚至可以选择 null

另请记住,COUNT(*)COUNT(1)COUNT(column_name) 有很大不同。 COUNT(*) 计算每一行,而 COUNT(column_name) 只计算不为 null 的行。

关于MySQL SELECT 1 vs SELECT `field_id` AND COUNT 1 vs COUNT (*) or COUNT (`field_id` ) 性能明智,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26501690/

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