两组,联接使用索引在MySQL相同的表;一个需要全表扫描
-
20-09-2019 - |
题
即时得到非常困惑与索引在MySQL。
我有两个表:TableA1和TableA2
我创建了这些为他们的索引之间的连接和查询运行非常快。
我有其他2个表有相同的设置例如TableB1和TableB2。唯一的区别是,这些表有几个空值。
有关某种原因TableA上相同的查询是快约5倍,并且不需要一个全表扫描。但是表B似乎使用全表扫描,我不能明白为什么。难道导致此空值?
我注意到使用EXPLAIN,关于表A的设置,我得到possible keys: myindex
并且还ref: func
;然而,在表B的设置我得到的只是possible keys: NULL
和ref: NULL
。
我四处搜寻有关此相当长一段时间,似乎并不能找到相关的答案。希望如果有人能在正确的方向指向我。
(对不起,现在已添加到原来的问题。)
下面是TableAOne:
CREATE TABLE `TableAOne` (
`field1` varchar(255) DEFAULT NULL,
`field2` varchar(255) DEFAULT NULL,
KEY `myindex` (`field1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
和TableATwo:
CREATE TABLE `TableATwo` (
`Field3` varchar(255) ,
`Field4` varchar(255) ,
`Field5` varchar(255) ,
`id` int(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=15522 DEFAULT CHARSET=utf8;
我正在与字段1接合字段3。
这获得完整的表扫描的表是相同于上述表中。唯一的区别是它们被称为表B代替表A
干杯,结果 柯
解决方案
我刚刚删除的表,并将其重新安装到DB(我的确改变了UTF8为latin1不知道这是否发挥了作用),但是现在的工作,真是奇怪!感谢v多少所有答复他们肯定把我推向了答案欢呼:)
不隶属于 StackOverflow