Mysql“发送数据”太长了

时间:2014-05-19 14:00:28

标签: mysql

我的表com_news有32000条记录。

com_news

CREATE TABLE IF NOT EXISTS `com_news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ts` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`text` longtext NOT NULL,
`id_user` int(11) NOT NULL DEFAULT '0',
`id_catalog` int(11) NOT NULL DEFAULT '0',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '0-off,1-on',
`window_title` varchar(255) DEFAULT NULL,
`meta_keywords` varchar(255) DEFAULT NULL,
`meta_description` text,
`source` varchar(255) DEFAULT NULL,
`img` int(11) NOT NULL DEFAULT '0',
`to_twitter` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=32719 ;

查询

SELECT COUNT(*) FROM `com_news` WHERE status=1 AND ts>=1398888007

配置文件

starting    0.000009
checking query cache for query  0.000027
Opening tables  0.000014
System lock 0.000003
Table lock  0.000016
init    0.000015
optimizing  0.000009
statistics  0.000009
preparing   0.000008
executing   0.000004
Sending data    0.517773
end 0.000013
query end   0.000003
freeing items   0.000025
storing result in query cache   0.000006
logging slow query  0.000002
cleaning up 0.000003

为什么发送数据太长了?

Apache/2.2.15 (CentOS)
MySQL: 5.1.73

1 个答案:

答案 0 :(得分:1)

您缺少表格中的索引。

所以在这里你可以做些什么来提高性能

alter table com_news add index stat_ts_idx (status,ts);

现在确保在应用索引之前备份表和数据。

此外,您应该始终查看解释计划,这将告诉您很多。

http://dev.mysql.com/doc/refman/5.0/en/explain.html