gpt4 book ai didi

ios - 查询优化或缓冲

转载 作者:行者123 更新时间:2023-11-29 01:07:24 24 4
gpt4 key购买 nike

我在 iOS 应用程序上有这个查询:

EXPLAIN QUERY PLAN SELECT
m.`id`, m.`no`, m.`name`, m.`image`, m.`stock`,
mp.`unit_price_from`, mp.`unit_list_price_from`, mp.`unit_price`, mp.`unit_list_price`,
(SELECT COUNT(`color_no`) FROM `variants` WHERE `model_no` = m.`no`) AS `variants_count`,
(SELECT COUNT(DISTINCT `color_no`) FROM `variants` WHERE `model_no` = m.`no`) AS `styles_count`
FROM `models` m
LEFT JOIN `model_prices` mp ON mp.`model_id` = m.`id`
WHERE
`noos` = 2 OR `noos` = 1

在我的 MacBook 上的模拟器上,这只需要 124ms144ms 之间。我在 model_no、color_no 和它们的组合变体上尝试了不同的索引,但它们并没有导致更快的查询。在 iPad 3 上,将查询速度减慢到 640ms 会变得更加乏味。这让应用程序的感觉有点小问题,我真的想摆脱它。

models 表在 noos 字段上也已经有一个 INDEX。

variants 表包含 12677 条记录。

model_prices 表包含 2792 条记录。

models 表包含 2792 条记录。

我想知道是否有某种方法可以改革 COUNT 子查询以在 SQLite 中获得更快的结果。我只喜欢使用某种手动缓存作为最后的手段,但我想先看看你们中的一些人是否可以在这里看到一些优化的可能性。

这是 EXPLAIN 结果:

enter image description here

最佳答案

对于这个查询:

SELECT m.`id`, m.`no`, m.`name`, m.`image`, m.`stock`,
mp.`unit_price_from`, mp.`unit_list_price_from`, mp.`unit_price`, mp.`unit_list_price`,
(SELECT COUNT(`color_no`) FROM `variants` WHERE `model_no` = m.`no`) AS `variants_count`,
(SELECT COUNT(DISTINCT `color_no`) FROM `variants` WHERE `model_no` = m.`no`) AS `styles_count`
FROM `models` m LEFT JOIN
`model_prices` mp
ON mp.`model_id` = m.`id`
WHERE m.`noos` IN (1, 2);

最好的索引应该是:models(noos, id)model_prices(model_id)variants(model_no, color_no)

关于ios - 查询优化或缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36179992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com