gpt4 book ai didi

MySQL:嵌套选择速度问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:26 25 4
gpt4 key购买 nike

我有以下表格:

|ELEMENTS|
------------
|id_element|
|id_catalog|
|value|


|CATALOG|
------------
|id_catalog|
|catalog_name|
|show|
|status|

我尝试添加不同的索引(几种变体):

1) ELEMENT: pair(id_element, id_catalog) and id_element and id_catalog
2) ELEMENT: pair(id_element, id_catalog) and id_element
3) ELEMENT: pair(id_element, id_catalog) and id_catalog
4) ELEMENT: id_element and id_catalog

1) CATALOG: pair(show, status) and id_catalog
2) CATALOG: id_catalog and show and status

执行跟随选择:

SELECT DISTINCT `id_element` FROM `ELEMENTS`
WHERE (id_catalog IN (SELECT `id_catalog` FROM `CATALOG` WHERE status=1 AND show = 1)) limit 10

如果有一些行,那么它工作得非常快。但如果它是空的——则需要超过 4 秒。

同时“SELECTid_catalogFROMCATALOGWHERE status=1 AND show = 1”在一些行和空。

在表 ELEMENTS 中有 100.000 条记录在表 CATALOG 中有 15.000 条记录

我也试过“加入”,但比以前花费更多时间。

为什么空查询的工作时间这么长,我应该怎么做才能提高速度?

这里是解释答案:

id | select_type          | table                  | type              | possible_keys             | key        | key_len | ref    | rows   | Extra
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 | 'PRIMARY', |'ELEMENTS' | 'index' | '' | null | null | null | 270044 | 'Using where; Using temporary'
2 | 'DEPENDENT SUBQUERY' | 'CATALOG' | 'unique_subquery' | 'PRIMARY,pair,id_catalog' | 'PRIMARY' | '4' | 'func' | 1 | 'Using where'

最佳答案

我想索引 CATALOG(status,show) 可以快速回答子选择。

然后 ELEMENTS(id_catalog) 上的一些索引将加快对主要问题的回答。

也许这取决于这些列的统计数据:如果它们的选择性不够,您最终会得到很多行。

当使用上面的两个索引时,你能显示 EXPLAIN 的输出吗?

关于MySQL:嵌套选择速度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6274615/

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