php - mysql中按慢查询排序

标签 php mysql join

我正在使用此查询来获取产品。产品表有 302,716 行。执行大约 2-3 分钟花费了太多时间。但是当我删除 order by 时,它花费的时间更少。

SELECT DISTINCT 
  product.ProductID,
  company.CompanyName 
FROM
  product 
  INNER JOIN company 
    ON company.CompanyID = product.CompanyID 
  LEFT JOIN company_csv_data 
    ON company.CompanyID = company_csv_data.CompanyID 
  LEFT JOIN productcategory 
    ON product.ProductID = productcategory.ProductID 
  LEFT JOIN category 
    ON category.CategoryID = productcategory.CategoryID 
  LEFT JOIN supplier 
    ON product.supplier = supplier.id 
  LEFT JOIN template_vouchers tm 
    ON product.ProductID = tm.voucher_id 
WHERE company.turn_on = 1 
  AND product.ProductEndDate >= CURRENT_DATE 
  AND turn_off = 1 
GROUP BY product.ProductID 
ORDER BY clicks DESC,
  product.CodeOpen DESC,
  product.Online,
  product.EntryDate DESC 
LIMIT 0, 15 

最佳答案

您可以通过为 select 和 where 子句中的列创建索引来提高查询的速度/性能(这会减慢插入、删除和更新语句的速度......)

关于php - mysql中按慢查询排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22093214/

相关文章:

php - 完整日历颜色/文本颜色不起作用

php - 单个代码行中的多个 header() + die() 实例

php - 使用 php mysql 选择一个未知的数据库表

mysql - 按多列分组并求和

php - 在 Laravel 5 单元测试中找不到特征

php - 什么是 PHP 中的异常,什么是 try 和 catch?

php - 如何在 MySQL Select 语句中使用 BETWEEN 的 PHP 数组?

mysql - 对于变长的数据库表,什么是好的解决方案?

mysql - 连接上的 LIMIT 1

ruby-on-rails - ruby如何简化split、iterate.each和join? -- ruby 初学者