mysql 效率低怎么办_mysql查询效率低,请问怎么破?

现在有一张表A,数据440W。

在select count(1) from A where unix_timestamp(createdDate) > unix_timestamp('2013-10-01 00:00:00') AND unix_timestamp(createdDate) < unix_timestamp('2013-10-31 23:59:59');的时候耗时3.59s。当我与另外一张表关联查询时,COUNT时,耗时16s。

现在我这样对它分区。

先创建一个 A2表,表结构与A表一致。

然后为A2加上分区,并把timestamp类型的createdDate作为分区字段。

ALTER TABLE A2 PARTITION BY RANGE(UNIX_TIMESTAMP(createdDate))(

PARTITION p20120101 VALUES LESS THAN (UNIX_TIMESTAMP('2012-01-01 00:00:00')),

PARTITION p20130101 VALUES LESS THAN (UNIX_TIMESTAMP('2013-01-01 00:00:00')),

PARTITION p20140101 VALUES LESS THAN (UNIX_TIMESTAMP('2014-01-01 00:00:00')),

PARTITION p20150101 VALUES LESS THAN (UNIX_TIMESTAMP('2015-01-01 00:00:00')),

PARTITION p20160101 VALUES LESS THAN (UNIX_TIMESTAMP('2016-01-01 00:00:00')),

PARTITION p20170101 VALUES LESS THAN (UNIX_TIMESTAMP('2017-01-01 00:00:00'))

);

然后

ALTER TABLE A RENAME TO A_BAK;

ALTER TABLE A2 RENAME TO A;

INSERT INTO A SELECT * FROM A_BAK;

最后在使用select count(1) from A where unix_timestamp(createdDate) > unix_timestamp('2013-10-01 00:00:00') AND unix_timestamp(createdDate) < unix_timestamp('2013-10-31 23:59:59');查询,发现还要3.59s。

请问我应该怎么破?怎么来提高查询效率。

我的mysql版本是5.5.28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值