首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随着表的增长,查询速度呈指数增长。

随着表的增长,查询速度呈指数增长。
EN

Database Administration用户
提问于 2015-02-28 20:05:25
回答 1查看 154关注 0票数 0

我在我的CENTOS服务器上的mysql 5.6上运行了以下查询

代码语言:javascript
复制
select tb1.field2, tb1.field1, tb2.field1 
from dns.table1 tb1, dns.table2 tb2 
where tb1.field2 = tb2.field2 
  and tb1.field1 != tb2.field1

所有相关列都被编入索引。对于有1000万行的表,它在400秒内完成,但是在1亿行上,它在10小时内完成!

表模式:

代码语言:javascript
复制
CREATE TABLE `my_table` (
  `table_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `field2` varchar(255) NOT NULL,
  `field1` varchar(255) DEFAULT NULL,
  `field3` longtext,
  `updated_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`table_id`),
  UNIQUE KEY `field2` (`field2`),
  KEY `field1` (`field1`)
) ENGINE=InnoDB 
  AUTO_INCREMENT=1 
  DEFAULT CHARSET=utf8 
  ROW_FORMAT=COMPRESSED 
  KEY_BLOCK_SIZE=8 |

这两个无害的表的大小是相等的。

为什么?我怀疑mysql内部的文件交换,在mysql上可以优化什么?增加缓冲池会有帮助吗?

EN

回答 1

Database Administration用户

发布于 2015-03-01 01:23:37

复合INDEX(field2, field1)将是一个“覆盖”指数。这将避免大量的查找,从而使其更快。注意:如果您也选择field3,这将不起作用。(在这种情况下,InnoDB和MyISAM都会受益。)

保留您的UNIQUE(field2)是因为唯一性约束。

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

https://dba.stackexchange.com/questions/94088

复制
相关文章

相似问题

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