gpt4 book ai didi

mysql - 需要以某种方式加速我的数据库或查询

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

我在 2 个表上有一个左连接语句:tbl1 有大约 100 万条记录,tbl2 有大约 2000 万条记录。执行该查询大约需要 9 秒。我对两者都有索引,但考虑到查询需要多长时间,有些事情似乎不太正确。这是我的选择语句:

EXPLAIN SELECT * FROM (SELECT tbl1.id, tbl1.name, tbl2.addr FROM tbl1 LEFT JOIN tbl2 ON tbl2.id = tbl1.id WHERE tbl1.name LIKE 'G%' AND tble2.addr IS NOT NULL) as tempTable GROUP BY id LIMIT 10;

+----+-------------+------------+--------+------------------+--------------+---------+----------------|
id|select_type| table |type |poss_keys|key |key_len|ref | rows | Extra
+----+-------------+------------+--------+------------------+--------------+---------+----------------
1 | PRIMARY | <derived2>|system| NULL |NULL| NULL |NULL | 0 | const row not found |
2 | DERIVED | tbl1 |range |id,name |name| 903 |NULL | 1 | Using where |
2 | DERIVED | tbl2 |ref |id,addr |id | 4 |tbl2.tbl1.id| 25 | Using where |
+----+-------------+------------+--------+------------------+--------------+---------+----------------

更新:如果我取出 join 语句并仅从 tbl1 或 tbl2 中单独选择记录,则 select 语句很快(远低于 1 秒),但是当我尝试加入它们时,它会大大减慢速度......我是否正确加入它们或我需要某种特殊的索引来进行连接吗?

最佳答案

您可以稍微简化一下...我认为您不需要临时表或组...

  SELECT tbl1.id, tbl1.name, tbl2.addr 
FROM tbl1 LEFT JOIN tbl2 ON tbl2.id = tbl1.id
WHERE tbl1.name LIKE 'G%' AND tble2.addr IS NOT NULL

另外...如果索引似乎不起作用,您可以添加“tble2.id like 'G%'”

关于mysql - 需要以某种方式加速我的数据库或查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4774522/

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