mysql - 如何优化产品抓取查询

标签 mysql

我使用以下查询来获取产品列表。查询工作正常,但大约需要 0.4534 秒。我如何优化相同的查询。

SELECT SQL_CALC_FOUND_ROWS DISTINCT tp.prod_id, tp.prod_name, tp.prod_shop, tp.prod_retail_price, tp.prod_sale_price, tp.prod_initial_price, tp.prod_stock, ts.shop_id, ts.shop_name, ts.shop_logo, ts.shop_description, ts.shop_title, tu.user_profile_image, ( SELECT pdiscount_price FROM tbl_product_discounts tpd WHERE tpd.pdiscount_product_id = tp.prod_id AND tpd.pdiscount_qty = '1' AND( ( tpd.pdiscount_start_date = '0000-00-00' OR tpd.pdiscount_start_date < NOW()) AND( tpd.pdiscount_end_date = '0000-00-00' OR tpd.pdiscount_end_date > NOW()) ) ORDER BY tpd.pdiscount_priority ASC, tpd.pdiscount_price ASC LIMIT 1 ) AS discount FROM tbl_products tp LEFT JOIN tbl_shops ts ON tp.prod_shop = ts.shop_id AND ts.shop_is_deleted = 0 INNER JOIN tbl_users tu ON ts.shop_user_id = tu.user_id WHERE tp.prod_is_deleted = '0' LIMIT 0, 20

最佳答案

不检查您的表格或要求:

  1. 尝试使用group by而不是DISTINCT
  2. 如果可能,请勿使用子查询
  3. 尝试在表中使用索引。

这将帮助您优化查询。

关于mysql - 如何优化产品抓取查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49333826/

相关文章:

c# - 将文本框值发送到 SQL 数据库

php - php应用程序代码评估

java - hibernate 映射创建表

MySQL:无法添加或更新子行

php - 查询数据库,分解日期以获取年份,并使用唯一年份填充下拉列表

mysql - 如何在每次重复值时进行计数/邮寄?

php - 操作数应包含 1 列 UPDATE

php - mysql - codeigniter 中的重复条目错误

mysql - 如何在mysql中将年份转换为日期?

mysql - SQL 或 NoSQL 的扩展和性能