当前位置:Gxlcms > 数据库问题 > mysql索引

mysql索引

时间:2021-07-01 10:21:17 帮助过:7人阅读

mysql 进行范围查询是并没有用到字段中的索引,是什么原因呢?

建立数据表:

CREATE TABLE IF NOT EXISTS `index` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,   `pp` varchar(64) COLLATE utf8_unicode_ci NOT NULL,   `fid` smallint(6) NOT NULL,   `timeint(12) NOT NULL,   `threadid-floor` varchar(32) COLLATE utf8_unicode_ci NOT NULL,   PRIMARY KEY (`id`),   KEY `index` (`pp`,`fid`,`time`),   KEY `pp` (`pp`),   KEY `time` (`time`) ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT=‘用户搜索‘ AUTO_INCREMENT=62878612 ;   然后使用下面sql查询: explain select `threadid-floor` from `index` force index(`time`) where `time`>1370304000; 发现并没有用到索引,     总结: mysql是否根据首次索引条件查出来的主键进行二次查找,也是要看查询出来的数量级,如果查询出来的数据量接近全表的数据量,就会全表扫描,否则根据第一次查询出来的主键进行二次查找,具体更具explain等进行测试.   在这么情况下,mysql不会使用索引

mysql索引

标签:big   arch   thread   sts   alt   是什么   not   col   ber   

人气教程排行