即时得到非常困惑与索引在MySQL。

我有两个表:TableA1和TableA2

我创建了这些为他们的索引之间的连接和查询运行非常快。

我有其他2个表有相同的设置例如TableB1和TableB2。唯一的区别是,这些表有几个空值。

有关某种原因TableA上相同的查询是快约5倍,并且不需要一个全表扫描。但是表B似乎使用全表扫描,我不能明白为什么。难道导致此空值?

我注意到使用EXPLAIN,关于表A的设置,我得到possible keys: myindex并且还ref: func;然而,在表B的设置我得到的只是possible keys: NULLref: 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多少所有答复他们肯定把我推向了答案欢呼:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top