gpt4 book ai didi

mysql - 如何加快对 MyISAM 表的巨大查询速度?

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

此查询针对单个表。该表有 60 个属性,称为“attribute1”到“attribute60”,它们的类型都是:

varchar(255)

还有一个名为“brand_id”的列,它是:

int(11)

表中存在以下键:

brand_id, attribute1, attribute2, attribute3

查询如下:

SELECT distinct attribute1
from brands b inner join product_applications pa on pa.brand_id = b.id
where b.id in (1,372,373,374,375,376,378,381,452,
453,454,455,456,457,458,461,474,476,
544,480,563,508,512,513,516,517,519,520,521,
522,524,525,527,528,529,533,538,539,540,542,
546,547,548,555,556,557,642,643,644,645,646,
647,648,649,650,651,652,653,654,655)

需要 10 多秒。该表有 5,735,673 行。

此查询需要的时间不超过 2 秒。我不知道如何编写它,或者我是否需要某种替代表结构来执行此操作。谁能推荐一下吗?

我曾经在 WHERE 子句中使用 IN,但在另一个论坛中建议,由于连接,这种丑陋的方式更快。我真的不知道这意味着什么,但它更快,但仍然慢得令人难以置信。

+----+-------------+-------+-------+----------------------------------------+--------------------+---------+-----------+-------+-------------------------------------------+| id | select_type | table | type  | possible_keys                          | key                | key_len | ref       | rows  | Extra                                     |+----+-------------+-------+-------+----------------------------------------+--------------------+---------+-----------+-------+-------------------------------------------+|  1 | SIMPLE      | b     | range | PRIMARY                                | PRIMARY            | 4       | NULL      |    60 | Using where; Using index; Using temporary | |  1 | SIMPLE      | pa    | ref   | brand_search_index,parttype_search_idx | brand_search_index | 5       | mcp5.b.id | 57356 | Using where; Using index                  | +----+-------------+-------+-------+----------------------------------------+--------------------+---------+-----------+-------+-------------------------------------------+2 rows in set (0.04 sec)

最佳答案

这似乎是一个奇怪的查询,所以我可能会遗漏一些东西,但我认为你可以使用 IN 子句来做到这一点:

SELECT distinct attribute1
from product_applications pa WHERE brand_id IN (1, 372, ..., 655)

我认为这更快 - 它当然更干净 - 但如果不是,你可能需要添加一些关于索引的细节,也许是 EXPLAIN QUERY 等。

关于mysql - 如何加快对 MyISAM 表的巨大查询速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6347952/

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