<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: MySQL &#8211; Simple ways to avoid filesort</title>
	<atom:link href="http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/feed/" rel="self" type="application/rss+xml" />
	<link>http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/</link>
	<description>Everything In Life Is Random! (Personal and Work)</description>
	<lastBuildDate>Thu, 02 Feb 2012 16:29:39 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Free To Feel &#187; Blog Archive &#187; Mysql : Avoid Filesort</title>
		<link>http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/comment-page-1/#comment-10204</link>
		<dc:creator>Free To Feel &#187; Blog Archive &#187; Mysql : Avoid Filesort</dc:creator>
		<pubDate>Thu, 03 Jun 2010 02:34:33 +0000</pubDate>
		<guid isPermaLink="false">http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/#comment-10204</guid>
		<description>[...] Reference [...]</description>
		<content:encoded><![CDATA[<p>[...] Reference [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Masao Kitamura &#187; How To Use MySQL EXPLAIN</title>
		<link>http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/comment-page-1/#comment-9722</link>
		<dc:creator>Masao Kitamura &#187; How To Use MySQL EXPLAIN</dc:creator>
		<pubDate>Mon, 29 Mar 2010 00:28:29 +0000</pubDate>
		<guid isPermaLink="false">http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/#comment-9722</guid>
		<description>[...] also http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/    Categories: MySQL Tags:         Comments (0) Trackbacks (0) Leave a comment [...]</description>
		<content:encoded><![CDATA[<p>[...] also <a href="http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/" rel="nofollow">http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/</a>    Categories: MySQL Tags:         Comments (0) Trackbacks (0) Leave a comment [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: durga</title>
		<link>http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/comment-page-1/#comment-9144</link>
		<dc:creator>durga</dc:creator>
		<pubDate>Wed, 25 Nov 2009 05:54:04 +0000</pubDate>
		<guid isPermaLink="false">http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/#comment-9144</guid>
		<description>explain SELECT      SQL_CALC_FOUND_ROWS      ops.node.node_id,      ops.node.name AS nodename,      ops.node.ytag,      ops.node.status,      ops.node.site_id,      ops.node.parent_id,      ops.site.name AS sitename,      ops.property.prop_id,      ops.property.name AS property_name,      c.code AS country_code,      d1.name AS node_type,      ops.node.locroom,      ops.node.loccage,      ops.node.locarea,      ops.node.locrow,      ops.node.locrack,      ops.node.locside,      ops.node.locshelf,      ops.node.bootbox_id,      ops.node.bport,      ops.node.bmodule,      ops.node.bplug,      ops.node.bootbox2_id,      ops.node.bport2,      ops.node.bmodule2,      ops.node.bplug2,      d2.name AS osname,      ops.os.version AS osver,      ops.node.racksize,      ops.node.serialno,      ops.node.console_id,      ops.node.cport,      ops.node.model_id,      ops.model.name AS model_name,      model.company_id,      ops.company.name AS com_name,      GROUP_CONCAT(DISTINCT ops.mac.mac ORDER BY ops.mac.mac SEPARATOR &#039;&#124;&#039;) AS mac,      ops.node.c_time AS bornondate,      UNIX_TIMESTAMP(ops.node.m_time) AS atime,      FROM_UNIXTIME(ops.node.c_time) AS c_time,      FROM_UNIXTIME(UNIX_TIMESTAMP(ops.node.m_time)) AS m_time,      ops.node.ponumber,      bp.name backplane,      ops.node.pdu,      ops.node.notes,      nswitch.name as mswitchname,      ops.node.sport as msport,      nvs.validation_status_id,      d3.name AS validation_status_name,      d3.label AS validation_status           FROM      ops.node       LEFT JOIN ops.property ON (node.prop_id = property.prop_id)       LEFT JOIN ops.country c ON property.country_id = c.country_id       LEFT JOIN ops.site ON (node.site_id = site.site_id)       LEFT JOIN ops.dictionary AS d1 ON (node.type_id = d1.dict_id)       LEFT JOIN ops.os ON (node.os_id = os.os_id)      LEFT JOIN ops.dictionary AS d2 ON (os.dict_id = d2.dict_id)       LEFT JOIN ops.model ON (node.model_id = model.model_id)       LEFT JOIN ops.mac ON (mac.node_id = node.node_id)       LEFT JOIN ops.company ON (model.company_id = company.company_id)       LEFT JOIN ops.node AS nswitch ON (ops.node.netswitch_id = nswitch.node_id)       LEFT JOIN ops.nodeValidationStatus AS nvs ON (node.node_id = nvs.node_id)       LEFT JOIN ops.dictionary AS d3 ON (nvs.validation_status_id = d3.dict_id)       LEFT JOIN ops.backplane as bp on (bp.backplane_id = node.backplane_id)  WHERE ops.node.name  &#039;&#039;  AND ops.node.status = &#039;active&#039; GROUP BY ops.node.node_id ORDER BY node.name  LIMIT 0, 25;
+----+-------------+----------+--------+-------------------+-----------+---------+------------------------------+------+----------------------------------------------+
&#124; id &#124; select_type &#124; table    &#124; type   &#124; possible_keys     &#124; key       &#124; key_len &#124; ref                          &#124; rows &#124; Extra                                        &#124;
+----+-------------+----------+--------+-------------------+-----------+---------+------------------------------+------+----------------------------------------------+
&#124;  1 &#124; SIMPLE      &#124; node     &#124; range  &#124; name              &#124; name      &#124; 257     &#124; NULL                         &#124;    4 &#124; Using where; Using temporary; Using filesort &#124; 
&#124;  1 &#124; SIMPLE      &#124; property &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.node.prop_id             &#124;    1 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; c        &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.property.country_id      &#124;    1 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; site     &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.node.site_id             &#124;    1 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; d1       &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.node.type_id             &#124;    1 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; os       &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.node.os_id               &#124;    1 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; d2       &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.os.dict_id               &#124;    1 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; model    &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.node.model_id            &#124;    1 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; mac      &#124; ref    &#124; node_id,node_id_2 &#124; node_id_2 &#124; 4       &#124; ops.node.node_id             &#124;   18 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; company  &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.model.company_id         &#124;    1 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; nswitch  &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.node.netswitch_id        &#124;    1 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; nvs      &#124; ref    &#124; node_id_2,node_id &#124; node_id   &#124; 5       &#124; ops.node.node_id             &#124;   15 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; d3       &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.nvs.validation_status_id &#124;    1 &#124;                                              &#124; 
&#124;  1 &#124; SIMPLE      &#124; bp       &#124; eq_ref &#124; PRIMARY           &#124; PRIMARY   &#124; 4       &#124; ops.node.backplane_id        &#124;    1 &#124;                                              &#124; 
+----+-------------+----------+--------+-------------------+-----------+---------+------------------------------+------+----------------------------------------------+
I chnaged the orader by column with let joined table&#039;s field but does not works for me..still taking file sorting.</description>
		<content:encoded><![CDATA[<p>explain SELECT      SQL_CALC_FOUND_ROWS      ops.node.node_id,      ops.node.name AS nodename,      ops.node.ytag,      ops.node.status,      ops.node.site_id,      ops.node.parent_id,      ops.site.name AS sitename,      ops.property.prop_id,      ops.property.name AS property_name,      c.code AS country_code,      d1.name AS node_type,      ops.node.locroom,      ops.node.loccage,      ops.node.locarea,      ops.node.locrow,      ops.node.locrack,      ops.node.locside,      ops.node.locshelf,      ops.node.bootbox_id,      ops.node.bport,      ops.node.bmodule,      ops.node.bplug,      ops.node.bootbox2_id,      ops.node.bport2,      ops.node.bmodule2,      ops.node.bplug2,      d2.name AS osname,      ops.os.version AS osver,      ops.node.racksize,      ops.node.serialno,      ops.node.console_id,      ops.node.cport,      ops.node.model_id,      ops.model.name AS model_name,      model.company_id,      ops.company.name AS com_name,      GROUP_CONCAT(DISTINCT ops.mac.mac ORDER BY ops.mac.mac SEPARATOR &#8216;|&#8217;) AS mac,      ops.node.c_time AS bornondate,      UNIX_TIMESTAMP(ops.node.m_time) AS atime,      FROM_UNIXTIME(ops.node.c_time) AS c_time,      FROM_UNIXTIME(UNIX_TIMESTAMP(ops.node.m_time)) AS m_time,      ops.node.ponumber,      bp.name backplane,      ops.node.pdu,      ops.node.notes,      nswitch.name as mswitchname,      ops.node.sport as msport,      nvs.validation_status_id,      d3.name AS validation_status_name,      d3.label AS validation_status           FROM      ops.node       LEFT JOIN ops.property ON (node.prop_id = property.prop_id)       LEFT JOIN ops.country c ON property.country_id = c.country_id       LEFT JOIN ops.site ON (node.site_id = site.site_id)       LEFT JOIN ops.dictionary AS d1 ON (node.type_id = d1.dict_id)       LEFT JOIN ops.os ON (node.os_id = os.os_id)      LEFT JOIN ops.dictionary AS d2 ON (os.dict_id = d2.dict_id)       LEFT JOIN ops.model ON (node.model_id = model.model_id)       LEFT JOIN ops.mac ON (mac.node_id = node.node_id)       LEFT JOIN ops.company ON (model.company_id = company.company_id)       LEFT JOIN ops.node AS nswitch ON (ops.node.netswitch_id = nswitch.node_id)       LEFT JOIN ops.nodeValidationStatus AS nvs ON (node.node_id = nvs.node_id)       LEFT JOIN ops.dictionary AS d3 ON (nvs.validation_status_id = d3.dict_id)       LEFT JOIN ops.backplane as bp on (bp.backplane_id = node.backplane_id)  WHERE ops.node.name  &#8221;  AND ops.node.status = &#8216;active&#8217; GROUP BY ops.node.node_id ORDER BY node.name  LIMIT 0, 25;<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
| id | select_type | table    | type   | possible_keys     | key       | key_len | ref                          | rows | Extra                                        |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
|  1 | SIMPLE      | node     | range  | name              | name      | 257     | NULL                         |    4 | Using where; Using temporary; Using filesort |<br />
|  1 | SIMPLE      | property | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.node.prop_id             |    1 |                                              |<br />
|  1 | SIMPLE      | c        | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.property.country_id      |    1 |                                              |<br />
|  1 | SIMPLE      | site     | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.node.site_id             |    1 |                                              |<br />
|  1 | SIMPLE      | d1       | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.node.type_id             |    1 |                                              |<br />
|  1 | SIMPLE      | os       | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.node.os_id               |    1 |                                              |<br />
|  1 | SIMPLE      | d2       | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.os.dict_id               |    1 |                                              |<br />
|  1 | SIMPLE      | model    | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.node.model_id            |    1 |                                              |<br />
|  1 | SIMPLE      | mac      | ref    | node_id,node_id_2 | node_id_2 | 4       | ops.node.node_id             |   18 |                                              |<br />
|  1 | SIMPLE      | company  | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.model.company_id         |    1 |                                              |<br />
|  1 | SIMPLE      | nswitch  | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.node.netswitch_id        |    1 |                                              |<br />
|  1 | SIMPLE      | nvs      | ref    | node_id_2,node_id | node_id   | 5       | ops.node.node_id             |   15 |                                              |<br />
|  1 | SIMPLE      | d3       | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.nvs.validation_status_id |    1 |                                              |<br />
|  1 | SIMPLE      | bp       | eq_ref | PRIMARY           | PRIMARY   | 4       | ops.node.backplane_id        |    1 |                                              |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
I chnaged the orader by column with let joined table&#8217;s field but does not works for me..still taking file sorting.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kareti ramakrishna</title>
		<link>http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/comment-page-1/#comment-4425</link>
		<dc:creator>kareti ramakrishna</dc:creator>
		<pubDate>Tue, 17 Jun 2008 07:46:20 +0000</pubDate>
		<guid isPermaLink="false">http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/#comment-4425</guid>
		<description>Hi,
Thanks for the information.
Nice to know about you.
All the Best
Ramakrishna</description>
		<content:encoded><![CDATA[<p>Hi,<br />
Thanks for the information.<br />
Nice to know about you.<br />
All the Best<br />
Ramakrishna</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vladimir Kolesnikov</title>
		<link>http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/comment-page-1/#comment-4359</link>
		<dc:creator>Vladimir Kolesnikov</dc:creator>
		<pubDate>Tue, 10 Jun 2008 10:32:31 +0000</pubDate>
		<guid isPermaLink="false">http://venublog.com/2007/11/29/mysql-how-to-avoid-filesort/#comment-4359</guid>
		<description>Venu,

your suggestions could work in some cases, but they will not work in general. Let me show you some simple examples.

1. You cannot avoid filesort by simply including the order by column(s) into WHERE:
SELECT col1 FROM testtab WHERE col1 &gt; 1 OR col3 &gt; 1 ORDER BY col3;

2. You not necessarily need to have ORDER BY column(s) in the WHERE clause:
ALTER TABLE testtab ADD INDEX ix1 (col1, col3);
SELECT col3 FROM testtab WHERE col1=1 ORDER BY col3;

Also, storage engine does matter... :)

BR</description>
		<content:encoded><![CDATA[<p>Venu,</p>
<p>your suggestions could work in some cases, but they will not work in general. Let me show you some simple examples.</p>
<p>1. You cannot avoid filesort by simply including the order by column(s) into WHERE:<br />
SELECT col1 FROM testtab WHERE col1 &gt; 1 OR col3 &gt; 1 ORDER BY col3;</p>
<p>2. You not necessarily need to have ORDER BY column(s) in the WHERE clause:<br />
ALTER TABLE testtab ADD INDEX ix1 (col1, col3);<br />
SELECT col3 FROM testtab WHERE col1=1 ORDER BY col3;</p>
<p>Also, storage engine does matter&#8230; <img src='http://venublog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>BR</p>
]]></content:encoded>
	</item>
</channel>
</rss>

