哪个查询更好?
SELECT true;SELECT true FROM users LIMIT 1;在以下方面:
最佳practice
发布于 2021-07-12 18:37:16
第一个查询的开销较小,因为它不引用任何表。
mysql> explain select true\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: NULL
partitions: NULL
type: NULL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: NULL
filtered: NULL
Extra: No tables used而第二个查询确实引用了一个表,这意味着它必须花费时间:
检查表是否存在,如果查询引用任何列,请检查您的用户有权限读取table.
下面是用于比较的第二个查询的解释:
mysql> explain select true from mysql.user limit 1\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: user
partitions: NULL
type: index
possible_keys: NULL
key: PRIMARY
key_len: 276
ref: NULL
rows: 8
filtered: 100.00
Extra: Using index发布于 2021-07-12 18:13:36
第一次查询将有一行值为true。第二个查询将返回users表中的所有行,但只返回true值。
因此,如果您需要一行用户第一次查询。但是,如果需要具有相同值的所有行,则使用第二个行。
发布于 2021-07-12 18:35:17
在这两种情况下,显然您都想要TRUE的值:)基于这一意图,"SELECT TRUE“是最有效的,因为它不会导致MySQL进一步查找users表,不管其中有多少行,如果有行,则进一步使用”限制1“!
关于最佳实践这个术语,我不知道你在这里的意思,因为在我看来,这甚至不需要实践,更不用说最好的实践了,因为我看不到这种方法在实际生活中的任何应用。
https://stackoverflow.com/questions/68352071
复制相似问题