【问题标题】:Optimize SQL "SELECT .. LIMIT" with two tables用两张表优化 SQL "SELECT .. LIMIT"
【发布时间】:2015-09-23 15:38:10
【问题描述】:

我有两个表:“users”和“purchase”。我编写了这个简单的 SELECT 查询,它运行良好,但时间很长。我想优化我的查询。我找到了很多如何做到这一点的例子,但是没有前任(或者我没有找到)从两个表中选择和比较数据。这是我的查询:

SELECT 
    purchase.user, purchase.price, users.login, users.id 
FROM 
    purchase, users 
WHERE 
    (purchase.user = users.id) AND (purchase.active = 1) 
ORDER BY purchase.time 
DESC LIMIT $page * $per_page, 15

【问题讨论】:

  • 您是否尝试针对您的查询运行 EXPLAIN 以作为开始?

标签: mysql sql select query-optimization


【解决方案1】:

速度慢的原因有很多。这里只是一些。

  1. 您只有大量数据(数百万)。
  2. 没有索引。检查表上的索引。你有定义吗?
  3. 坏条款。尝试不带某些子句(例如不带 DESC、不带 ORDER)
  4. 硬件问​​题(它存储在某个磁盘非常慢的地方。)
  5. “很长一段时间”对你我来说是不同的。

【讨论】:

  • 有几千个用户和购买。显示一页大约需要 15 秒
  • 偏移量为 0 的“长时间”?请提供SHOW CREATE TABLE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多