I have this MySQL which should be correct syntax:
select c.cat_id,c.cat_name as cat_name,
c.cat_desc, c.cat_image, mi.filename,
l.link_id, l.user_id, l.address,l.city,
l.country,l.link_created,l.link_desc,
l.email,l.fax,l.link_hits, l.link_modified,
l.link_name,l.postcode, l.price,l.link_rating,
l.state,l.telephone,l.link_votes,
l.website, l.link_id, l.link_visited, cf.value
from j25_mt_cats as c,
j25_mt_links as l
LEFT OUTER JOIN j25_mt_cfvalues AS cf ON (cf.link_id = l.link_id),
j25_mt_images AS mi,
j25_mt_cl as cl
UNION ALL
select c.cat_id,c.cat_name as cat_name,
c.cat_desc, c.cat_image, mi.filename,
l.link_id, l.user_id, l.address,l.city,
l.country,l.link_created,l.link_desc,
l.email,l.fax,l.link_hits, l.link_modified,
l.link_name,l.postcode, l.price,l.link_rating,
l.state,l.telephone,l.link_votes,
l.website, l.link_id, l.link_visited, cf.value
FROM j25_mt_cats as c,
j25_mt_links as l
RIGHT OUTER JOIN j25_mt_cfvalues AS cf ON cf.link_id = l.link_id,
j25_mt_images AS mi,
j25_mt_cl as cl
where cf.cf_id = 40 and cl.link_id = l.link_id
AND mi.link_id = l.link_id AND mi.ordering < 2
AND c.cat_id = cl.cat_id and c.cat_published = 1
AND c.cat_approved = 1 and l.link_published = 1 and l.link_approved = 1
AND cf.link_id IS NULL;
The query eats up 3GB+ in the tmp directory and ends up timing out. I'm missing something here, how can I increase the efficiency? My goal here was just adding onto an existing query to grab a value from an additional table (j25_mt_cfvalues).
explain:
+----+--------------+------------+-------+---------------+---------+---------+--------------------------+------+------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------+------------+-------+---------------+---------+---------+--------------------------+------+------------------+
| 1 | PRIMARY | mi | ALL | NULL | NULL | NULL | NULL | 165 | |
| 1 | PRIMARY | c | ALL | NULL | NULL | NULL | NULL | 301 | |
| 1 | PRIMARY | l | ALL | NULL | NULL | NULL | NULL | 2139 | |
| 1 | PRIMARY | cf | ref | link_id | link_id | 4 | db_table.l.link_id | 2 | |
| 1 | PRIMARY | cl | index | NULL | PRIMARY | 4 | NULL | 2742 | Using index |
| 2 | UNION | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Impossible WHERE |
| NULL | UNION RESULT | <union1,2> | ALL | NULL | NULL | NULL | NULL | NULL | |
+----+--------------+------------+-------+---------------+---------+---------+--------------------------+------+------------------+
j25_mt_cats schema:
CREATE TABLE
j25_mt_cats(cat_idint(11) NOT NULL auto_increment,cat_namevarchar(255) NOT NULL,aliasvarchar(255) NOT NULL,titlevarchar(255) NOT NULL,cat_desctext NOT NULL,cat_parentint(11) NOT NULL default '0',cat_linksint(11) NOT NULL default '0',cat_catsint(11) NOT NULL default '0',cat_featuredtinyint(4) NOT NULL default '0',cat_imagevarchar(255) NOT NULL,cat_publishedtinyint(4) NOT NULL default '0',cat_createddatetime NOT NULL default '0000-00-00 00:00:00',cat_approvedtinyint(4) NOT NULL default '0',cat_templatevarchar(255) NOT NULL default '',cat_usemainindextinyint(4) NOT NULL default '0',cat_allow_submissiontinyint(4) NOT NULL default '1',cat_show_listingstinyint(3) unsigned NOT NULL default '1',metakeytext NOT NULL,metadesctext NOT NULL,orderingint(11) NOT NULL default '0',lftint(11) NOT NULL default '0',rgtint(11) NOT NULL default '0', PRIMARY KEY (cat_id), KEYcat_id(cat_id,cat_published,cat_approved), KEYcat_parent(cat_parent,cat_published,cat_approved,cat_cats,cat_links), KEYdtree(cat_published,cat_approved), KEYlft_rgt(lft,rgt), KEYfunc_getPathWay(lft,rgt,cat_id,cat_parent), KEYalias(alias) ) ENGINE=MyISAM AUTO_INCREMENT=3851 DEFAULT CHARSET=utf8 |
j25_mt_links schema:
CREATE TABLE
j25_mt_links(link_idint(11) NOT NULL auto_increment,link_namevarchar(255) NOT NULL,aliasvarchar(255) NOT NULL,link_descmediumtext NOT NULL,user_idint(11) NOT NULL default '0',link_hitsint(11) NOT NULL default '0',link_votesint(11) NOT NULL default '0',link_ratingdecimal(7,6) unsigned NOT NULL default '0.000000',link_featuredsmallint(6) NOT NULL default '0',link_publishedtinyint(4) NOT NULL default '0',link_approvedint(4) NOT NULL default '0',link_templatevarchar(255) NOT NULL,attribstext NOT NULL,metakeytext NOT NULL,metadesctext NOT NULL,internal_notestext NOT NULL,orderingint(11) NOT NULL default '0',link_createddatetime NOT NULL default '0000-00-00 00:00:00',publish_updatetime NOT NULL default '0000-00-00 00:00:00',publish_downdatetime NOT NULL default '0000-00-00 00:00:00',link_modifieddatetime NOT NULL default '0000-00-00 00:00:00',link_visitedint(11) NOT NULL default '0',addressvarchar(255) NOT NULL,cityvarchar(255) NOT NULL,statevarchar(255) NOT NULL,countryvarchar(255) NOT NULL,postcodevarchar(255) NOT NULL,telephonevarchar(255) NOT NULL,faxvarchar(255) NOT NULL,websitevarchar(255) NOT NULL,pricedouble(9,2) NOT NULL default '0.00',latfloat(10,6) NOT NULL COMMENT 'Latitude',lngfloat(10,6) NOT NULL COMMENT 'Longitude',zoomtinyint(3) unsigned NOT NULL COMMENT 'Map''s zoom level', PRIMARY KEY (link_id), KEYlink_rating(link_rating), KEYlink_votes(link_votes), KEYlink_name(link_name), KEYpublishing(link_published,link_approved,publish_up,publish_down), KEYcount_listfeatured(link_published,link_approved,link_featured,publish_up,publish_down,link_id), KEYcount_viewowner(link_published,link_approved,user_id,publish_up,publish_down), KEYmylisting(user_id,link_id), FULLTEXT KEYlink_name_desc(link_name,link_desc) ) ENGINE=MyISAM AUTO_INCREMENT=3229 DEFAULT CHARSET=utf8 |
j25_mt_cfvalues schema:
CREATE TABLE
j25_mt_cfvalues(idint(11) NOT NULL auto_increment,cf_idint(11) NOT NULL,link_idint(11) NOT NULL,valuemediumtext NOT NULL,attachmentint(10) unsigned NOT NULL default '0',counterint(11) NOT NULL default '0', PRIMARY KEY (id), KEYcf_id(cf_id,link_id), KEYlink_id(link_id), KEYvalue(value(8)) ) ENGINE=MyISAM AUTO_INCREMENT=20876 DEFAULT CHARSET=utf8 |