MySQL(InnoDB) 在执行查询的过程中,同时命中两个单列索引,
mySQL会使用哪一列索引?
SELECT * FROM indexestest WHERE name= '测试1' and age = '1';
(id为主键,name 和 age 都添加了普通BTree索引)
会根据
索引的添加顺序
来进行操作
表数据的建立
create TABLE indexesTest (
`id` int(11) NOT NULL AUTO_INCREMENT primary key,
`name` varchar(25) default NULL,
`age` int(11) default null,
key `nKey` (`name`) using BTREE,
KEY `aKey` (`age`) using BTREE
) AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;
create TABLE indexesTest2 (
`id` int(11) NOT NULL AUTO_INCREMENT primary key,
`name` varchar(25) default NULL,
`age` int(11) default null,
KEY `aKey` (`age`) using BTREE,
key `nKey` (`name`) using BTREE
) AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;
INSERT INTO `indexestest`(`name`, `age`) VALUES ('测试1', 1);
INSERT INTO `indexestest2`(`name`, `age`) VALUES ('测试1', 1);
通过Explain 进行查询分析
nkey在前查询测试
EXPLAIN SELECT * FROM indexestest WHERE `name` = '测试1' and age = '1';
akey在前查询测试
EXPLAIN SELECT * FROM indexestest2 WHERE `name` = '测试1' and age = '1';
CREATE TABLE `test_models` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`a` INT(11) DEFAULT NULL,
`b` INT(11) DEFAULT NULL,
`c` INT(11) DEFAULT NULL,
数据库相关视频讲解:用python编程Excel有没有用处?MySQL 命中多个索引
在MySQL中,索引是一种数据结构,用于提高数据库查询的性能。当我们在数据库中建立了适当的索引,查询语句将会更快地找到所需的数据,从而提高数据库的效率。一般来说,每个表中都会有一个主键索引,以及一些其他列的索引。
然而,在某些情况下,查...
选择索引列
在性能优化过程中,选择在哪些列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有两种类型的列:在Where子句中出现的列,在join子句中出现的列。请看下面这个查询:
Select age ## 不使用索引
FROM people Where firstname='Mike' ## 考虑使用索引
AND lastname='Sullivan' ## 考虑使用索
对于要经常查询的含量大量数据的数据库,建立索引是非常重要的,建立索引一般都是在where语句用得较多的列上。现在有个问题,如果一个表有多个列需要建立索引,是把所有列建成一个索引,还是对每一个列建一个索引,上篇文章做了一个介绍,这是作者得出的结论,Conclusion: For
benchmarked queries we can see Multiple Column index beats
因为一个MYSQL查询语句只使用一个索引,当你这个语句的WHERE有两个字段作为条件的话,如果使用两个字段联合起来建立一个索引,性能会高得多。反之,如果是两个字段分别建立的索引,MYSQL只能使用其中一个,另外一个用顺序查询。
索引可以是单列索引,也可以是多列索引。下面我们通过具体的例子来说明这两种索引的区别。假设有这样一个people表:ALTER TABLE people ADD
soraFont.dll solidcore32.dll SoDalibUpdater.dll sodaliblite.dll SNSImport.dll snd_fmod.dll