Saludos,<br><br>Es recomendable usar campos cortos para el indice pero de igual manera si tus busquedas frecuentes van a utlilizar ese campo y la tabla va a crecer bastante, es mejor que uses tu indice en ese campo; no creo que afecte mucho porque son solo 12 caracteres.
<br><br>En cuanto a tu segunda consulta he hecho algunas consultas monitorizando la diferencia entre los join y el where y no encontre diferencias. Habia leido que era mejor el uso de joins pero en mi caso no obtuve diferencia. Opino que los mas importante es como diseñes tu consulta, los indices que uses, MySQL tiene su optimizador pero tu puedes usar hints para cambiar su comportamiento. Puedes usar un Explain(o Explain Extended) para analizar el comportamiento de tu consulta y poder realizar los ajustes necesarios. Tambien es importante que hagas las pruebas lo mas real posible, es decir, si tu aplicación va a manejar grandes volumenes de datos, haz las pruebas con grandes cantidades de datos.
<br><br><div><span class="gmail_quote">El día 14/08/07, <b class="gmail_sendername">Quasi</b> <<a href="mailto:quasi@aurea.es">quasi@aurea.es</a>> escribió:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000">
<font face="Verdana">Hola.<br>
<br>
Tengo 2 dudas sobre optimización en mysql.<br>
<br>
Haber que opinais.<br>
</font>
<ol>
<li>Supongamos que tenemos una tabla user, y esta tiene ya su ID como
primary, etc. Pero también tiene una columna URI. Que viene a ser un
texto corto (max 12 char) de identificador. Por ejemplo: id=1,
nick='{albert ~ IV}', uri='albert'. Luego en el sitio Web, se acceden
a urls del tipo: <a href="http://dominio.com/albert" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">dominio.com/albert</a>, y las consultas sql serán
where='albert'. Por un lado creo que sería positivo puesto que el dato
uri es muy usado en where. Pero por otro lado tengo miedo de que
aumente muchisimo el tamaño del fichero de indices.</li>
<li>La segunda consulta va referida con la recuperación de datos
multitabla. Es mas optimo usar el inner join, que apoyarse en clausulas
where. Pero se tratan de 4 tablas indexadas, de las cuales se sacan
datos de todas ellas. Por otro lado esta el propio optimizador de
mysql, que se encargaría de convertir esa consulta en la más optima.
Algún consejo con este tipo de consultas?</li>
</ol>
Muchas gracias por adelantada.<br>
<br>
<font face="Verdana"><br>
</font>
<div>-- <br>
<p style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(84, 112, 130);">
Quasi ;)<br>
<a href="http://aurea.es" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">www.aurea.es</a>
</p>
</div>
</div>
<br>_______________________________________________<br>Usuarios mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Usuarios@mysql-hispano.org">Usuarios@mysql-hispano.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://lists.mysql-hispano.org/mailman/listinfo/usuarios" target="_blank">
http://lists.mysql-hispano.org/mailman/listinfo/usuarios</a><br><br></blockquote></div><br><br clear="all"><br>-- <br>Piero Recchia<br>Desarrollador Avanzado<br>Adverweb, C.A.<br><a href="http://www.adverweb.com.ve">http://www.adverweb.com.ve
</a><br>Móvil: (416) 814-4914<br>Email: <a href="mailto:pocanto@adverweb.com.ve">pocanto@adverweb.com.ve</a>