gpt4 book ai didi

MySQL优化——索引的使用

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

我在表 a 上有以下索引:

SHOW INDEX FROM a

Table, Non_unique, Key_name, Seq_in_index, Column_name, Collation, Cardinality, Sub_part, Packed, Null, Index_type, Comment, Index_comment

a, '1', 'oc_id', '1', 'OC_ID', 'A', '19', NULL, NULL, 'YES', 'BTREE', '', ''

explain 计划显示它正在被使用:

EXPLAIN SELECT * FROM a
WHERE OC_ID IN (
5841)

'1', 'SIMPLE', a, 'ref', 'oc_id,oc1', 'oc_id', '6', 'const', '121080', 'Using where'

但是使用子查询就不用了:

EXPLAIN SELECT * FROM a
WHERE OC_ID IN (SELECT OC_ID FROM b WHERE tteci = "54301")

'1', 'PRIMARY', a, 'ALL', NULL, NULL, NULL, NULL, '701145408', 'Using where'
'2', 'DEPENDENT SUBQUERY', b, 'index_subquery', 'OC_ID,tteci1', 'OC_ID', '6', 'func', '1', 'Using where'

我做错了什么?

最佳答案

为了获得更好的性能,您可以使用连接而不是基于子选择结果的 IN 子句

SELECT * 
FROM a
INNER JOIN b ON a.OC_ID = b.OC_ID and b.tteci = "54301"

对于索引,您应该使用包含 JOIN 子句中涉及的列的复合索引,例如表 b:

(tteci, OC_ID) 

对于表a,OC_ID索引就足够了

关于MySQL优化——索引的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51107885/

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