首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两组具有使用MySQL中的索引的连接的初始表;其中一组需要全表扫描

问两组具有使用MySQL中的索引的连接的初始表;其中一组需要全表扫描
EN

Stack Overflow用户
提问于 2010-02-15 03:36:33
回答 1查看 125关注 0票数 2

我对MySQL中的索引感到非常困惑。

我有两个表: TableA1和TableA2。

我为它们之间的连接创建了索引,查询运行得非常快。

我还有另外两个具有相同设置的表,例如TableB1和TableB2。唯一的区别是这些表有几个空值。

由于某些原因,在TableA上执行相同的查询大约快5倍,并且不需要全表扫描。然而,TableB似乎使用了全表扫描,我不知道为什么。会不会是空值导致了这种情况?

我注意到在使用EXPLAIN时,在TableA设置中,我得到了possible keys: myindex和ref: func;但是在TableB设置中,我只得到了possible keys: NULL和ref: NULL。

我在这个问题上找了很长时间,似乎找不到相关的答案。如果有人能给我指出正确的方向,我将不胜感激。

(对不起,现在已加入原问题。)。

下面是TableAOne:

代码语言:javascript
复制
CREATE TABLE `TableAOne` (
  `field1` varchar(255) DEFAULT NULL,
  `field2` varchar(255) DEFAULT NULL,
  KEY `myindex` (`field1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

和TableATwo:

代码语言:javascript
复制
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;

我将和Field1一起加入Field3。

获得全表扫描的表与上面的表相同。唯一的区别是它们被称为TableB而不是TableA。

干杯,

柯氏

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-15 11:00:11

我只是删除了表,并将其重新安装到数据库中(我确实将utf8更改为latin1,但不确定这是否有区别),但是现在它可以工作了,真的很奇怪!非常感谢所有的回复,他们确实推动了我的回答干杯:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2262458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档