gpt4 book ai didi

mysql - 为什么 MySQL 不使用这些可能的键中的任何一个?

转载 作者:IT老高 更新时间:2023-10-28 23:47:06 27 4
gpt4 key购买 nike

我有以下疑问:

SELECT t.id
FROM account_transaction t
JOIN transaction_code tc ON t.transaction_code_id = tc.id
JOIN account a ON t.account_number = a.account_number
GROUP BY tc.id

当我执行 EXPLAIN 时,第一行除其他外显示:

table: t
type: ALL
possible_keys: account_id,transaction_code_id,account_transaction_transaction_code_id,account_transaction_account_number
key: NULL
rows: 465663

为什么key是NULL?

最佳答案

您可能遇到的另一个问题是数据类型不匹配。例如,如果您的列是字符串数据类型(CHAR,例如),并且您的查询没有引用数字,那么 MySQL 将不会使用索引。

SELECT * FROM tbl WHERE col = 12345; # No index
SELECT * FROM tbl WHERE col = '12345'; # Index

资料来源:今天刚刚解决了同样的问题,并在 MySQL 5.1 上学习了艰难的方法。 :)

编辑:验证这一点的其他信息:

mysql> desc das_table \G
*************************** 1. row ***************************
Field: das_column
Type: varchar(32)
Null: NO
Key: PRI
Default:
Extra:
*************************** 2. row ***************************
[SNIP!]

mysql> explain select * from das_table where das_column = 189017 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: das_column
type: ALL
possible_keys: PRIMARY
key: NULL
key_len: NULL
ref: NULL
rows: 874282
Extra: Using where
1 row in set (0.00 sec)

mysql> explain select * from das_table where das_column = '189017' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: das_column
type: const
possible_keys: PRIMARY
key: PRIMARY
key_len: 34
ref: const
rows: 1
Extra:
1 row in set (0.00 sec)

关于mysql - 为什么 MySQL 不使用这些可能的键中的任何一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719392/

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