<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>optimización archivos - Detrás del último no va nadie</title>
	<atom:link href="https://blog.krusher.net/tag/optimizacion/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Porque alguien tenía que pensar en los peces</description>
	<lastBuildDate>Sun, 10 Apr 2016 11:20:17 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.krusher.net/wp-content/uploads/2016/02/cropped-detras-del-ultimo-no-va-nadie-icon-32x32.jpg</url>
	<title>optimización archivos - Detrás del último no va nadie</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Consultas MySQL con muchos JOINs</title>
		<link>https://blog.krusher.net/2016/01/consultas-mysql-con-muchos-joins/</link>
					<comments>https://blog.krusher.net/2016/01/consultas-mysql-con-muchos-joins/#respond</comments>
		
		<dc:creator><![CDATA[Krusher]]></dc:creator>
		<pubDate>Tue, 26 Jan 2016 13:03:22 +0000</pubDate>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[join]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[optimización]]></category>
		<category><![CDATA[optimizer_search_depth]]></category>
		<category><![CDATA[profiling]]></category>
		<category><![CDATA[query]]></category>
		<guid isPermaLink="false">http://blog.krusher.net/?p=135</guid>

					<description><![CDATA[<p>A veces uso MySQL por elección. No por mi elección, sino por la de los clientes. 🙂 Una de las cosas que más me ha roto la cabeza es optimizar queries con muchos JOINs. Recientemente, un informe requería una consulta con 25 JOINs, y al tratar de ejecutarla nuestro servidor prácticamente lloraba que por favor &#8230; <a href="https://blog.krusher.net/2016/01/consultas-mysql-con-muchos-joins/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Consultas MySQL con muchos JOINs"</span></a></p>
<p>La entrada <a href="https://blog.krusher.net/2016/01/consultas-mysql-con-muchos-joins/">Consultas MySQL con muchos JOINs</a> se publicó primero en <a href="https://blog.krusher.net">Detrás del último no va nadie</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A veces uso MySQL por elección. No por mi elección, sino por la de los clientes. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Una de las cosas que más me ha roto la cabeza es optimizar queries con muchos JOINs. Recientemente, un informe requería una consulta con 25 JOINs, y al tratar de ejecutarla nuestro servidor prácticamente lloraba que por favor parásemos. Sin embargo, me he topado (al decir verdad, fue mi jefe) con una variable de configuración muy interesante a la hora de encarar este problema.</p>
<p><span id="more-135"></span></p>
<blockquote><p><em> optimizer_search_depth</em></p>
<p>The maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to generate an execution plan for a query. Values smaller than the number of relations in a query return an execution plan quicker, but the resulting plan may be far from being optimal. If set to 0, the system automatically picks a reasonable vaue.</p></blockquote>
<p>Tan fácil como establecer esta variable de configuración a 0, las queries han pasado de tardar años a pocos segundos. En concreto, queries con unos 10 JOINs pasan de tardar 40 segundos a tardar 2. Haciendo profiling parece que casi todo el tiempo se emplea en generar un plan de ejecución pero, vaya si vale la pena. (la query original nunca conseguí que acabase, tuve que quitarle elementos para ir probándola)</p>
<p>Esta configuración se realiza tanto a nivel de sesión como de servidor, por lo que parece una buena opción a probar si hemos terminado de tirarnos de los pelos optimizando la query. Es probable que un DB admin promedio conozca estos trucos, pero a mí me sorprende lo «escondida» que está.</p>
<p>La entrada <a href="https://blog.krusher.net/2016/01/consultas-mysql-con-muchos-joins/">Consultas MySQL con muchos JOINs</a> se publicó primero en <a href="https://blog.krusher.net">Detrás del último no va nadie</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.krusher.net/2016/01/consultas-mysql-con-muchos-joins/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
