首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql排序结果包括SELECT IF() as Alice

MySql排序结果包括SELECT IF() as Alice
EN

Stack Overflow用户
提问于 2020-08-28 19:18:53
回答 1查看 20关注 0票数 0

我有两个表products和products_actions

在产品中,我存储普通数据,如id、名称、制造商、价格、date_added

在product_actions中,我像这样存储数据: id,product_id,store_id,operator,status_id

然后问题是,当我在DataTables中显示数据并尝试按store_id排序时,需要很长时间,比如3-4秒(如果我按名称或id排序,花费的时间不到半秒),即使我在product_actions中索引product_id,products_actions中只有2k条记录,products中只有14k条记录

当我使用IF as Alice时,如何解决排序问题,看起来没有索引

代码语言:javascript
复制
    SELECT p.id, p.name, p.mpn, p.price, p.comment, p.status, p.date_added, m.name AS manufacture,
(SELECT IF(pa.store_id = 9, pa.status, 'null') FROM products_actions pa WHERE p.id = pa.product_id AND pa.store_id = 9) AS store_1,
(SELECT IF(pa.store_id = 4, pa.status, 'null') FROM products_actions pa WHERE p.id = pa.product_id AND pa.store_id = 4) AS store_2,
(SELECT IF(pa.store_id = 5, pa.status, 'null') FROM products_actions pa WHERE p.id = pa.product_id AND pa.store_id = 5) AS store_3
FROM products p
LEFT JOIN manufacture m ON p.manufacture = m.id
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-31 14:24:06

因为我从products_actions选择了store_id和status

代码语言:javascript
复制
(SELECT IF(pa.store_id = 9, pa.status, 'null') FROM products_actions pa WHERE p.id = pa.product_id AND pa.store_id = 9) AS store_1

我也应该为它们建立索引,而不是像我那样只使用product_id

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63632764

复制
相关文章

相似问题

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