gpt4 book ai didi

mysql - 如何使用 LIKE 提高查询中的索引使用率

转载 作者:行者123 更新时间:2023-11-29 12:42:49 26 4
gpt4 key购买 nike

CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
KEY `first_name` (first_name),
KEY `last_name` (last_name),
KEY `last_first` (last_name,first_name)
);

如果我有这样的查询,如果我有这样的表索引,这很好吗:

SELECT * FROM test WHERE first_name = 'A';
SELECT * FROM test WHERE last_name= 'A';
SELECT * FROM test WHERE first_name like '%A%';
SELECT * FROM test WHERE last_name like '%A%';
SELECT * FROM test WHERE last_name= 'A' AND first_name = 'A';
SELECT * FROM test WHERE last_name like '%A%' AND first_name like '%A%';
SELECT * FROM test WHERE last_name= 'A' OR first_name = 'A';
SELECT * FROM test WHERE last_name like '%A%' first_name OR like '%A%';

更新错误的查询。

最佳答案

SELECT * FROM test WHERE first_name = 'A';

first_name 上的索引会有所帮助

SELECT * FROM test WHERE last_name= 'A';

last_name 上的索引会有所帮助

SELECT * FROM test WHERE first_name like '%A%';
SELECT * FROM test WHERE last_name like '%A%';

没有索引会有所帮助,您只能针对“A%”或带有反向值列的“%A”进行优化。

SELECT * FROM test WHERE last_name= 'A' AND first_name = 'A';

关于姓氏、名字或名字、姓氏的索引会有所帮助,但可能其中一个就足够了

SELECT * FROM test WHERE like '%A%' AND like '%A%';
SELECT * FROM test WHERE like '%A%' OR like '%A%';

不是有效的查询

SELECT * FROM test WHERE last_name= 'A' OR first_name = 'A';

姓氏或名字的索引会有所帮助,但表扫描的机会很大

关于mysql - 如何使用 LIKE 提高查询中的索引使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25881250/

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