首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL优化-查询时间为11秒

SQL优化-查询时间为11秒
EN

Stack Overflow用户
提问于 2014-11-25 15:02:03
回答 1查看 119关注 0票数 1

查询工作。有了10.000元,就需要11秒。如果我不按顺序排序,只需要1秒。但我需要点菜。

我们能优化它吗?如何优化?

代码语言:javascript
复制
SELECT
    u.urunID,
    i.urunadi,
    u.seo,
    u.stok_kodu,
    u.kstok_sayisi,
    u.stok_sayisi,
    u.goruntuleme,
    (SELECT SUM(su.adet) FROM siparis_urunler su LEFT JOIN siparis s ON s.siparisID = su.siparisID WHERE s.durum_id NOT IN (26, 24) AND su.urunID = u.urunID) AS sadet
FROM
    urunler u
INNER JOIN urun_isim i ON u.urunID = i.urunID
WHERE
    u.stok_sayisi <= u.kstok_sayisi
AND u.durum = 1
GROUP BY
    u.urunID
ORDER BY
    sadet DESC
LIMIT 0, 20

解释:

代码语言:javascript
复制
+----+--------------------+-------+--------+---------------------------------+-----------+---------+-----------------------------+------+----------------------------------------------+
| id | select_type        | table | type   | possible_keys                   | key       | key_len | ref                         | rows | Extra                                        |
+----+--------------------+-------+--------+---------------------------------+-----------+---------+-----------------------------+------+----------------------------------------------+
|  1 | PRIMARY            | i     | index  | PRIMARY,urunadi2                | urunadi   | 768     | NULL                        | 4997 | Using index; Using temporary; Using filesort |
|  1 | PRIMARY            | u     | eq_ref | PRIMARY,urunID,urunler,urunler2 | PRIMARY   | 4       | katalog_db.i.urunID         |    1 | Using where                                  |
|  3 | DEPENDENT SUBQUERY | sp    | ALL    | NULL                            | NULL      | NULL    | NULL                        |   11 | Using where                                  |
|  2 | DEPENDENT SUBQUERY | s     | ALL    | PRIMARY,siparis                 | NULL      | NULL    | NULL                        |  805 | Using where                                  |
|  2 | DEPENDENT SUBQUERY | su    | ref    | surunler2                       | surunler2 | 10      | katalog_db.s.siparisID,func |    1 | Using where                                  |
+----+--------------------+-------+--------+---------------------------------+-----------+---------+-----------------------------+------+----------------------------------------------+
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-25 16:29:44

这个跑得更快吗?

代码语言:javascript
复制
SELECT
    u.urunID,
    i.urunadi,
    u.seo,
    u.stok_kodu,
    u.kstok_sayisi,
    u.stok_sayisi,
    u.goruntuleme,
    SUM(su.adet) AS sadet

FROM
    urunler u
    INNER JOIN urun_isim i        ON u.urunID    = i.urunID
    INNER JOIN siparis_urunler su ON su.urunID   = u.urunID
    LEFT JOIN siparis s           ON s.siparisID = su.siparisID 

WHERE
    u.stok_sayisi <= u.kstok_sayisi
    AND s.durum_id NOT IN (26, 24) 
    AND u.durum = 1
GROUP BY
    u.urunID,
    i.urunadi,
    u.seo,
    u.stok_kodu,
    u.kstok_sayisi,
    u.stok_sayisi,
    u.goruntuleme
ORDER BY 8 DESC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27130029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档