gpt4 book ai didi

sql - MYSQL优化&问题

转载 作者:行者123 更新时间:2023-11-29 04:04:39 24 4
gpt4 key购买 nike

我正在尝试优化我的 MySQL 查询,我需要一些帮助。这是我当前的查询:

SELECT *,
(SELECT name FROM stores WHERE id = products.store_id) AS store_name,
(SELECT username FROM stores WHERE id = products.store_id) AS store_username,
(SELECT region_id FROM stores WHERE id = products.store_id) AS region_id,
(SELECT city_id FROM stores WHERE id = products.store_id) AS city_id,
(SELECT name FROM categories_sub WHERE id = products.subcategory_id) AS subcategory_name,
(SELECT name FROM categories WHERE id = category_id) AS category_name
FROM products
WHERE date_start <= DATE(NOW()) AND date_end >= DATE(NOW())

我很确定它可以更快。

我还有一个问题,当我尝试按 region_id(通过添加类似“AND region_id = MYID”的内容)选择所有产品时,它不起作用,我想知道是否有可能让它工作,如何工作?

感谢您的宝贵时间!

解决方案

这是我的最终查询,如果它可以帮助任何人:

SELECT p.*,
s.name AS store_name,
cs.name AS subcategory_name,
cat.id AS category_id, cat.name AS category_name,
c.id AS city_id, c.name AS city_name,
r.id AS region_id, r.name AS region_name
FROM products p
JOIN stores s ON (s.id = p.store_id)
JOIN categories_sub cs ON (cs.id = p.subcategory_id)
JOIN categories cat ON (cat.id = cs.category_id)
JOIN cities c ON (c.id = s.city_id)
JOIN regions r ON (r.id = c.region_id)
WHERE DATE(NOW()) BETWEEN p.date_start AND p.date_end

谢谢!

最佳答案

您确实需要学习使用 JOIN。它是关系查询的基本操作,就像 while() 循环是大多数应用程序语言中的基本控制结构一样。

任何有关 SQL 的书籍或教程都应涵盖JOIN

SELECT p.*, 
s.name AS store_name, s.username AS store_username,
s.region_id, s.city_id,
cs.name AS subcategory_name,
c.name AS category_name
FROM products p
JOIN stores s ON (s.id = p.store_id)
JOIN categories c ON (c.id = p.category_id)
JOIN categories_sub cs ON (cs.id = p.subcategory_id)
WHERE DATE(NOW()) BETWEEN p.date_start AND p.date_end

现在您可以向 WHERE 子句添加更多条件:

  AND s.region_id = ?;

还有一个评论...我试图通过使用 BETWEEN 谓词来变得聪明,但这可能会混淆 MySQL 相对简单的优化器。 MySQL 可能更容易优化您的原始语法:

WHERE p.date_start <= DATE(NOW()) AND p.date_end >= DATE(NOW())

关于sql - MYSQL优化&问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/763667/

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