加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL连接性能不佳

发布时间:2021-01-24 23:02:32 所属栏目:编程 来源:网络整理
导读:我一向在实行在MySQL中的两个表上执行联接,而且查询将运行一两分钟,然后再耗尽内存而没有功效.我间隔数据库专家还很远,以是我不确定我的查询编写是否欠好,是否设置了一些MySQL配置错误,可能我是否真的应该对查询做其他工作.仅供参考,数据库位于我的计较机本

我一向在实行在MySQL中的两个表上执行联接,而且查询将运行一两分钟,然后再耗尽内存而没有功效.我间隔数据库专家还很远,以是我不确定我的查询编写是否欠好,是否设置了一些MySQL配置错误,可能我是否真的应该对查询做其他工作.仅供参考,数据库位于我的计较机当地.

我有一个大表(约200万笔记录),个中一列是进入小表(约3000笔记录)的ID.在这种环境下,ID在大表中不是独一的,而在小表中是独一的.我实行了以下查询的各类情势,但好像没有任何结果:

SELECT big_table.*,small_table.col 
  FROM big_table 
left outer join small_table on (big_table.small_id = small_table.id)

我正在对确实必要所有200万行的数据举办大量说明,尽量不必然要在单个查询中举办.这是我的“表现建设表”的功效:

'big_table','CREATE TABLE 'big_table' (
  'BIG_ID_1',varchar(12) NOT NULL,'BIG_ID_2',int(100) NOT NULL,'SMALL_ID' varchar(8) DEFAULT NULL,'TYPICAL_OTHER_COLUMN' varchar(3) DEFAULT NULL,...
  PRIMARY KEY ('BIG_ID_1','BIG_ID_2')
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1'

'small_table','CREATE TABLE `small_table` (
  `id`,varchar(8) NOT NULL DEFAULT '''',`col`,varchar(1) DEFAULT NULL,...
  PRIMARY KEY (`id`),KEY `inx_id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1'

这是我的一个候选查询的“表明”功效:

id  select_type  table        type    possible_keys   key      key_len  ref                         rows     extra
1   SIMPLE       big_table    ALL     NULL            NULL     NULL     NULL                        1962193       
1   SIMPLE       small_table  eq_ref  PRIMARY,inx_id  PRIMARY  10       db_name.big_table.SMALL_ID  1             
最佳谜底 您在单个查询中选择约莫200万笔记录.按照每一行中的数据量,它也许是您要哀求的数百兆字节的数据.

您也许想实行的工作:

>假如不必要全部列,请查询所需的列,而不要行使SELECT table.*.
>查察是否可以将部门(或所有)处理赏罚移至数据库,而不是获取数据并在客户端中举办处理赏罚.
>停止一次将整个功效集读入存储器.
>一次处理赏罚数千行,而不是一次获取全部行.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读