rendered paste bodymysql> SHOW CREATE TABLE lb_link\G;
*************************** 1. row ***************************
Table: lb_link
Create Table: CREATE TABLE `lb_link` (
`link_id` int(10) NOT NULL auto_increment,
`link_partner_id` int(10) NOT NULL default '0',
`link_site_id` int(10) NOT NULL default '0',
`link_linkback_url` varchar(255) character set utf8 NOT NULL default '',
`link_status` int(5) NOT NULL default '0',
`link_created_on` datetime NOT NULL default '0000-00-00 00:00:00',
`link_modified_on` datetime NOT NULL default '0000-00-00 00:00:00',
`link_created_by` int(10) NOT NULL default '0',
`link_modified_by` int(10) NOT NULL default '0',
PRIMARY KEY (`link_id`),
UNIQUE KEY `link_partner_id` (`link_partner_id`,`link_site_id`),
KEY `link_linkback_url` (`link_linkback_url`),
KEY `link_site_id` (`link_site_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
mysql> SHOW CREATE TABLE lb_partner\G;
*************************** 1. row ***************************
Table: lb_partner
Create Table: CREATE TABLE `lb_partner` (
`partner_id` int(10) NOT NULL auto_increment,
`partner_category` int(4) NOT NULL default '0',
`partner_language` varchar(2) character set utf8 NOT NULL default 'en',
`partner_name` varchar(128) character set utf8 NOT NULL default 'link',
`partner_description` text character set utf8,
`partner_url` text character set utf8 NOT NULL,
`partner_email` text character set utf8,
`partner_form` varchar(255) character set utf8 NOT NULL default '',
`partner_old_id` int(10) default NULL,
`partner_created_on` datetime NOT NULL default '0000-00-00 00:00:00',
`partner_modified_on` datetime NOT NULL default '0000-00-00 00:00:00',
`partner_created_by` int(10) NOT NULL default '0',
`partner_modified_by` int(10) NOT NULL default '0',
PRIMARY KEY (`partner_id`),
KEY `partner_category` (`partner_category`),
KEY `partner_form` (`partner_form`),
KEY `partner_language` (`partner_language`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
1 row in set (0.00 sec)
The slow queries:
Ordering by link_id takes 4x the time and it has 12,000,000 rows
# Time: 080408 17:46:46
# User@Host: link_builder[link_builder] @ localhost []
# Query_time: 24 Lock_time: 0 Rows_sent: 0 Rows_examined: 4675
SELECT partner_name, partner_url, partner_description FROM lb_link LEFT JOIN lb_partner ON link_partner_id = partner_id WHERE link_site_id = 576 AND partner_category = '3' AND partner_language = 'jp' AND link_status IN (1,2) LIMIT 1120, 40;
# Time: 080408 17:47:45
# User@Host: link_builder[link_builder] @ localhost []
# Query_time: 20 Lock_time: 0 Rows_sent: 40 Rows_examined: 10079
SELECT partner_name, partner_url, partner_description FROM lb_link LEFT JOIN lb_partner ON link_partner_id = partner_id WHERE link_site_id = 130 AND partner_category = '2' AND partner_language = 'jp' AND link_status IN (1,2) LIMIT 4400, 40;
mysql> explain SELECT partner_name, partner_url, partner_description FROM lb_link LEFT JOIN lb_partner ON link_partner_id = partner_id WHERE link_site_id = 425 AND partner_category = '2' AND partner_language = 'jp' AND link_status IN (1,2) LIMIT 1640, 40;
+----+-------------+------------+--------+-------------------------------------------+------------------+---------+------------------------------------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+------------+--------+-------------------------------------------+------------------+---------+------------------------------------------+------+-------------+
| 1 | SIMPLE | lb_partner | ref | PRIMARY,partner_category,partner_language | partner_category | 4 | const | 5998 | Using where |
| 1 | SIMPLE | lb_link | eq_ref | link_partner_id,link_site_id | link_partner_id | 8 | link_builder.lb_partner.partner_id,const | 1 | Using where |
+----+-------------+------------+--------+-------------------------------------------+------------------+---------+------------------------------------------+------+-------------+
2 rows in set (2.00 sec)