gpt4 book ai didi

mysql - 这两个查询之间的效率或其他差异是什么?

转载 作者:行者123 更新时间:2023-11-29 05:06:35 25 4
gpt4 key购买 nike

我下载了 Yelp 数据集并将其放入 MySQL,因为我一直在使用的数据集太小了,真的不必考虑效率。我正试图忘记或意识到不良的 SQL 习惯,这些习惯会导致更大的数据集出现问题。

这里有两种从数据库中提取完全相同信息的方法:

USE yelp_db;

SELECT name, hours FROM business
LEFT JOIN hours
ON business.id = hours.business_id;
-- time taken 0,0025sec, 776071 rows returned

SELECT name, hours FROM
(SELECT name, id from business) AS b
LEFT JOIN
(SELECT hours, business_id from hours) AS h
ON b.id = h.business_id;
-- time taken 0,0015sec, 776071 rows returned

这是输出示例:

John's Chinese BBQ Restaurant   NULL
Primal Brewery Monday|16:00-22:00
Primal Brewery Tuesday|16:00-22:00
Primal Brewery Friday|12:00-23:00

第一种方法需要 3 行,但看起来比需要 5 行的第二种方法稍慢。

就效率或优雅而言,这些方法中的任何一种都是首选,如果是,为什么?

最佳答案

第一种方法是性能和优雅的首选——你的结果无法承受。

我对时间有点怀疑。我希望返回接近一百万行的时间超过一两毫秒。

无论如何,大多数版本的 MySQL(最新的可能是异常(exception))实现了子查询。这为查询添加了额外的写入和读取层。它还可以防止索引的使用。

至于优雅,不必要的子查询对“优雅”没有任何作用。这可能是一个见仁见智的问题,但我猜它的传播范围很广。

关于mysql - 这两个查询之间的效率或其他差异是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46646757/

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