Reputation: 23
I have table com_news
with 32000 records.
The table 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 ;
The query
SELECT COUNT(*) FROM `com_news` WHERE status=1 AND ts>=1398888007
Profile
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
Why is Sending data is too long?
Apache/2.2.15 (CentOS)
MySQL: 5.1.73
Upvotes: 0
Views: 2866
Reputation: 44864
You are missing index in the table.
So here what you can do to increase the performance
alter table com_news add index stat_ts_idx (status,ts);
Now make sure you take a backup of the table and data before applying the index.
Also you should always check the explain plan for the query which will tell you a lot.
http://dev.mysql.com/doc/refman/5.0/en/explain.html
Upvotes: 1