<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-26801181.post114626350234965876..comments</id><updated>2011-06-11T17:13:40.137+02:00</updated><category term='Tutorial PL/SQL'/><category term='Optimización y tuning de bases de datos'/><category term='Librerías estándar PLSQL'/><category term='Utilidades PLSQL'/><category term='Bases de datos Oracle'/><title type='text'>Comments on Programación PL/SQL y bases de datos Oracle: Puesta a punto de sentencias SQL (Tuning - 1)</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.plsql.biz/feeds/114626350234965876/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html'/><author><name>José Luis Pérez</name><uri>https://profiles.google.com/102634062599347146150</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4QS7hkQaOzk/AAAAAAAAAAI/AAAAAAAAGhg/FWpeXVJY9cg/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-26801181.post-1715785076364287349</id><published>2011-06-11T17:13:40.137+02:00</published><updated>2011-06-11T17:13:40.137+02:00</updated><title type='text'>Hola Latosso, el optimizador de la base de datos O...</title><content type='html'>Hola Latosso, el optimizador de la base de datos Oracle empleará un plan de ejecución un otro dependiendo de los valores que tomen los parámetros. Si alguno es nulo simplemente eliminará esa condición del WHERE.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/1715785076364287349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/1715785076364287349'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html?showComment=1307805220137#c1715785076364287349' title=''/><author><name>Pepelu</name><uri>http://www.blogger.com/profile/00891045835734721638</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18072941500668390493'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_ObxKtfPuuSQ/RZbWU_RnoqI/AAAAAAAAAFA/MVY1NBWkkFM/s200/compuntoes-caballo.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html' ref='tag:blogger.com,1999:blog-26801181.post-114626350234965876' source='http://www.blogger.com/feeds/26801181/posts/default/114626350234965876' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1588385999'/></entry><entry><id>tag:blogger.com,1999:blog-26801181.post-9110131743257955383</id><published>2011-06-06T19:23:21.805+02:00</published><updated>2011-06-06T19:23:21.805+02:00</updated><title type='text'>Antes que nada una felicitacion por tu blog, tiene...</title><content type='html'>Antes que nada una felicitacion por tu blog, tiene muchos tips utiles.&lt;br /&gt;Ahora mi duda&lt;br /&gt;Me podrias explicar cuando afecta al performance consulta que en el where tengan :&lt;br /&gt;AND campo1 = NVL(:P_parametro1,campo1 )&lt;br /&gt;AND campo2 = NVL(:P_parametro2,campo2 )&lt;br /&gt;&lt;br /&gt;Y si afecta cual seria el mejor metodo para optimizar cuando se tenga la necesida de este tipo de consultas.&lt;br /&gt;&lt;br /&gt;Saludos y Gracias.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/9110131743257955383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/9110131743257955383'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html?showComment=1307381001805#c9110131743257955383' title=''/><author><name>Latosso</name><uri>http://www.blogger.com/profile/02193850317621167265</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html' ref='tag:blogger.com,1999:blog-26801181.post-114626350234965876' source='http://www.blogger.com/feeds/26801181/posts/default/114626350234965876' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1903236893'/></entry><entry><id>tag:blogger.com,1999:blog-26801181.post-5076772691239472846</id><published>2011-05-04T16:35:26.521+02:00</published><updated>2011-05-04T16:35:26.521+02:00</updated><title type='text'>Hola Jesús,

Mejorar el rendimiento de una sentenc...</title><content type='html'>Hola Jesús,&lt;br /&gt;&lt;br /&gt;Mejorar el rendimiento de una sentencia PL/SQL sin conocer el entorno que la rodea es complicado. El rendimiento debe mejorar con sólo crear los índices adecuados. &lt;br /&gt;&lt;br /&gt;De todas formas a bote pronto se me ocurre que el rendimiento debe mejorar dividiendo la sentencia en dos SELECT:&lt;br /&gt;&lt;br /&gt;SELECT SUM(a.t_doc)&lt;br /&gt;INTO t_ingresos&lt;br /&gt;FROM movs_almacen_item a&lt;br /&gt;WHERE a.t_cod IN (101, 103)&lt;br /&gt;AND a.idorganizacion = 1002&lt;br /&gt;AND estado = 0&lt;br /&gt;AND to_char(fecha_movimiento,&amp;#39;yyyymm&amp;#39;) = wperiodo&lt;br /&gt;AND idbienser = tc1.idbienser;&lt;br /&gt;&lt;br /&gt;SELECT SUM(a.t_doc)&lt;br /&gt;INTO t_salidas&lt;br /&gt;FROM movs_almacen_item a&lt;br /&gt;WHERE a.t_cod = 102&lt;br /&gt;AND a.idorganizacion = 1002&lt;br /&gt;AND estado = 0&lt;br /&gt;AND to_char(fecha_movimiento,&amp;#39;yyyymm&amp;#39;) = wperiodo&lt;br /&gt;AND idbienser = tc1.idbienser;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/5076772691239472846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/5076772691239472846'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html?showComment=1304519726521#c5076772691239472846' title=''/><author><name>Pepelu</name><uri>http://www.blogger.com/profile/00891045835734721638</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18072941500668390493'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_ObxKtfPuuSQ/RZbWU_RnoqI/AAAAAAAAAFA/MVY1NBWkkFM/s200/compuntoes-caballo.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html' ref='tag:blogger.com,1999:blog-26801181.post-114626350234965876' source='http://www.blogger.com/feeds/26801181/posts/default/114626350234965876' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1588385999'/></entry><entry><id>tag:blogger.com,1999:blog-26801181.post-7217554540426828307</id><published>2011-05-03T19:29:23.320+02:00</published><updated>2011-05-03T19:29:23.320+02:00</updated><title type='text'>Hola Pepelu
quisiera que me ayudes con este select...</title><content type='html'>Hola Pepelu&lt;br /&gt;quisiera que me ayudes con este select para hacerlo mas rapida su consulta de mi db ya que esta muy lenta&lt;br /&gt;Ejem:&lt;br /&gt;    select&lt;br /&gt;    nvl(sum(decode(a.t_doc,101,a.cantidad,0))+sum(decode(a.t_doc,103,a.cantidad,0)),0)&lt;br /&gt;    ,nvl(sum(decode(a.t_doc,102,a.cantidad,0)),0)&lt;br /&gt;      into t_ingresos, t_salidas&lt;br /&gt;        from movs_almacen_item a&lt;br /&gt;          where a.idorganizacion = 1002&lt;br /&gt;          and estado = 0&lt;br /&gt;          and to_char(fecha_movimiento,&amp;#39;yyyymm&amp;#39;) = wperiodo&lt;br /&gt;          and idbienser = tc1.idbienser;&lt;br /&gt;Gracias por tu ayuda</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/7217554540426828307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/7217554540426828307'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html?showComment=1304443763320#c7217554540426828307' title=''/><author><name>Jesus</name><uri>http://www.blogger.com/profile/08529397070983069203</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html' ref='tag:blogger.com,1999:blog-26801181.post-114626350234965876' source='http://www.blogger.com/feeds/26801181/posts/default/114626350234965876' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1589940303'/></entry><entry><id>tag:blogger.com,1999:blog-26801181.post-204832025833517110</id><published>2008-04-07T19:44:00.000+02:00</published><updated>2008-04-07T19:44:00.000+02:00</updated><title type='text'>Primero intentaría modificar la consulta utilizand...</title><content type='html'>Primero intentaría modificar la consulta utilizando en todos los &lt;I&gt;OR&lt;/I&gt; alguna columna pura (sin función) sobre la que existiese un índice (&lt;I&gt;first_name&lt;/I&gt; o &lt;I&gt;last_name&lt;/I&gt;) para ver si de alguna manera me valen los resultados entregados.&lt;BR/&gt;&lt;BR/&gt;Si necesitas algún &lt;I&gt;OR&lt;/I&gt; donde ambos &lt;I&gt;AND&lt;/I&gt; utilicen funciones sobre campos de la tabla, entonces yo añadiría nuevas columnas a la tabla cuyo contenido sean los valores de las funciones y luego crearía índices para las parejas de datos que comparas en los diferentes &lt;I&gt;OR&lt;/I&gt;.&lt;BR/&gt;&lt;BR/&gt;No es una solución muy "limpia" pero es la única forma en la que puedes evitar el &lt;I&gt;full scan&lt;/I&gt;.&lt;BR/&gt;&lt;BR/&gt;Ten en cuenta que a lo mejor el optimizador no es lo suficientemente inteligente para aplicar un índice diferente a cada &lt;I&gt;OR&lt;/I&gt;, pero lo que si puedes hacer es dividir la consulta en varias, una para cada &lt;I&gt;OR&lt;/I&gt;, y posteriormente utilizar el comando &lt;I&gt;UNION&lt;/I&gt; para unirlas, de esta manera el optimizador podrá usar diferentes índices.&lt;BR/&gt;&lt;BR/&gt;Creo que si tienes más dudas lo mejor es que usemos el email (pepelublog[arroba]gmail[punto]com).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/204832025833517110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/204832025833517110'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html?showComment=1207590240000#c204832025833517110' title=''/><author><name>Pepelu</name><uri>http://www.blogger.com/profile/00891045835734721638</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18072941500668390493'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_ObxKtfPuuSQ/RZbWU_RnoqI/AAAAAAAAAFA/MVY1NBWkkFM/s200/compuntoes-caballo.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html' ref='tag:blogger.com,1999:blog-26801181.post-114626350234965876' source='http://www.blogger.com/feeds/26801181/posts/default/114626350234965876' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1588385999'/></entry><entry><id>tag:blogger.com,1999:blog-26801181.post-7704285288764429869</id><published>2008-04-07T18:52:00.000+02:00</published><updated>2008-04-07T18:52:00.000+02:00</updated><title type='text'>hola nuevamente pepelu.&lt;br&gt;&lt;br&gt;Gracias x haber con...</title><content type='html'>hola nuevamente pepelu.&lt;BR/&gt;&lt;BR/&gt;Gracias x haber contestado a mi pregunta y pues realmente tienes razón ya que no fuí del todo explicita en lo que te quería preguntar.&lt;BR/&gt;&lt;BR/&gt;Mi consulta la estoy realizando sobre una sola tabla y mi objetivo es utilizarla en un procedimiento para obtener de acuerdo a un nombre tecleado los registros que más se le parezcan a dicho nombre. La consulta es la siguiente:&lt;BR/&gt;&lt;BR/&gt;SELECT /*+first_rows*/ /*+ INDEX(CYT_USUARIO_IDX1) */ UPPER (FIRST_NAME), UPPER(LAST_NAME), UPPER (SECOND_LAST_NAME), OPRID FROM CYT_USUARIOS&lt;BR/&gt;WHERE FIRST_NAME = nombres_aux&lt;BR/&gt;AND LAST_NAME = paterno_aux&lt;BR/&gt;OR SUBSTR(FIRST_NAME,1,4) = SUBSTR(nombres_aux,1,4)&lt;BR/&gt;AND SUBSTR(LAST_NAME,1,4) = SUBSTR(paterno_aux,1,4)&lt;BR/&gt;OR SUBSTR(FIRST_NAME,1,1) =  DECODE(instr(nombres_aux,' '),0,'',SUBSTR(nombres_aux,(INSTR(nombres_aux,' ')+1),1))&lt;BR/&gt;AND SUBSTR(LAST_NAME,1,4) = SUBSTR(paterno_aux,1,4)&lt;BR/&gt;OR SUBSTR(FIRST_NAME,(INSTR(FIRST_NAME,' ')+1),1) = SUBSTR(nombres_aux,1,1)&lt;BR/&gt;AND LAST_NAME = paterno_aux&lt;BR/&gt;OR SOUNDEX(FIRST_NAME) = SOUNDEX(nombres_aux)&lt;BR/&gt;AND SOUNDEX(LAST_NAME) = SOUNDEX(paterno_aux)&lt;BR/&gt;&lt;BR/&gt;El problema que tengo es de concurrencia ya que como te comente la utilizo en un procedimiento y hay ocasiones que es utilizado hasta por 10 personas.&lt;BR/&gt;&lt;BR/&gt;La he analizado mediante el explain plan y cuando utilizo el substr o el soundex hace un full table y aumenta el costo.&lt;BR/&gt;&lt;BR/&gt;Espero haber sido explicita y de antemano agradezco tu respuesta y te felicito por tu blogg, esta super chido y no sabes la gran ayuda que aportas a los no tan expertos como tu</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/7704285288764429869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/7704285288764429869'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html?showComment=1207587120000#c7704285288764429869' title=''/><author><name>marel</name><uri>http://www.blogger.com/profile/12547216133500531425</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html' ref='tag:blogger.com,1999:blog-26801181.post-114626350234965876' source='http://www.blogger.com/feeds/26801181/posts/default/114626350234965876' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1879308979'/></entry><entry><id>tag:blogger.com,1999:blog-26801181.post-1134362748847180449</id><published>2008-04-05T13:45:00.000+02:00</published><updated>2008-04-05T13:45:00.000+02:00</updated><title type='text'>Marel,&lt;br&gt;&lt;br&gt;Tu pregunta no resulta sencillo de c...</title><content type='html'>Marel,&lt;BR/&gt;&lt;BR/&gt;Tu pregunta no resulta sencillo de contestar con los datos que aportas. &lt;BR/&gt;&lt;BR/&gt;Si estas enlazando dos tablas y para enlazarlas necesitas utilizar una función sin poder utilizar ningún índice, entonces podrías crear un índice de tipo función, o bien crear una columna con el resultado de la función, crear un índice sobre dicha columna y después enlazar las tablas utilizando esa columna.&lt;BR/&gt;&lt;BR/&gt;En cuanto a los índices de tipo función sólo sé que existen pero nunca los he utilizado. Aquí te dejo un ejemplo:&lt;BR/&gt;&lt;BR/&gt;CREATE INDEX nombre_mayuscula&lt;BR/&gt;ON tabla_nombres (UPPER(nombre));&lt;BR/&gt;&lt;BR/&gt;Este tipo de índices requieren que el parámetro QUERY_REWRITE_ENABLED este puesto a TRUE.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/1134362748847180449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/1134362748847180449'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html?showComment=1207395900000#c1134362748847180449' title=''/><author><name>Pepelu</name><uri>http://www.blogger.com/profile/00891045835734721638</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18072941500668390493'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_ObxKtfPuuSQ/RZbWU_RnoqI/AAAAAAAAAFA/MVY1NBWkkFM/s200/compuntoes-caballo.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html' ref='tag:blogger.com,1999:blog-26801181.post-114626350234965876' source='http://www.blogger.com/feeds/26801181/posts/default/114626350234965876' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1588385999'/></entry><entry><id>tag:blogger.com,1999:blog-26801181.post-2419831644215473263</id><published>2008-04-05T01:21:00.000+02:00</published><updated>2008-04-05T01:21:00.000+02:00</updated><title type='text'>hola.&lt;br&gt;&lt;br&gt;como puede reducir el costo de una se...</title><content type='html'>hola.&lt;BR/&gt;&lt;BR/&gt;como puede reducir el costo de una sentencia si en el where utilizo un substr o un soundex</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/2419831644215473263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/2419831644215473263'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html?showComment=1207351260000#c2419831644215473263' title=''/><author><name>marel</name><uri>http://www.blogger.com/profile/12547216133500531425</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html' ref='tag:blogger.com,1999:blog-26801181.post-114626350234965876' source='http://www.blogger.com/feeds/26801181/posts/default/114626350234965876' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1879308979'/></entry><entry><id>tag:blogger.com,1999:blog-26801181.post-8674097707089001592</id><published>2007-08-16T18:27:00.000+02:00</published><updated>2007-08-16T18:27:00.000+02:00</updated><title type='text'>Gracias Evilblues.&lt;br&gt;&lt;br&gt;El order de las tablas e...</title><content type='html'>Gracias Evilblues.&lt;BR/&gt;&lt;BR/&gt;El order de las tablas en el &lt;I&gt;FROM&lt;/I&gt; es importante cuando se utiliza el &lt;I&gt;hint ORDERED&lt;/I&gt; (SELECT /*+ ORDERED */), en cuyo caso el optimizador intentará unir las tablas siguiendo el orden en que aparecen las tablas en el &lt;I&gt;FROM&lt;/I&gt;. Esta es una de las formas más utilizadas a la hora de optimizar una sentencia SQL o PL/SQL.&lt;BR/&gt;&lt;BR/&gt;Si no se utiliza este &lt;I&gt;hint&lt;/I&gt; entonces el optimizador utilizará el orden que tenga un coste menor (si estamos utilizando el optimizador basado en costes) o el que tenga una menor prioridad (si utilizamos el &lt;A HREF="http://www.plsql.biz/2007/07/el-optimizador-plsql-basado-en-normas.html" REL="nofollow"&gt;optimizador SQL basado en normas&lt;/A&gt;). En este caso, el orden de las tablas en el &lt;I&gt;FROM&lt;/I&gt; sólo influiría si existiesen dos planes de ejecución con el mismo coste o la misma prioridad, en cuyo caso el optimizador Oracle eligiría el que más se aproxime al orden del &lt;I&gt;FROM&lt;/I&gt;.&lt;BR/&gt;&lt;BR/&gt;En el ejemplo que propones el orden no es importante, el optimizador accederá primero a la tabla empleados buscando los empleados que se apellidan Martínez y luego procederá a unir dichos registros con la tabla departamento.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/8674097707089001592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/8674097707089001592'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html?showComment=1187281620000#c8674097707089001592' title=''/><author><name>Pepelu</name><uri>http://www.blogger.com/profile/00891045835734721638</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18072941500668390493'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_ObxKtfPuuSQ/RZbWU_RnoqI/AAAAAAAAAFA/MVY1NBWkkFM/s200/compuntoes-caballo.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html' ref='tag:blogger.com,1999:blog-26801181.post-114626350234965876' source='http://www.blogger.com/feeds/26801181/posts/default/114626350234965876' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1588385999'/></entry><entry><id>tag:blogger.com,1999:blog-26801181.post-601081349467686232</id><published>2007-08-07T14:43:00.000+02:00</published><updated>2007-08-07T14:43:00.000+02:00</updated><title type='text'>Buenas,&lt;br&gt;&lt;br&gt;buen blog el tuyo,eso lo primero&lt;br...</title><content type='html'>Buenas,&lt;BR/&gt;&lt;BR/&gt;buen blog el tuyo,eso lo primero&lt;BR/&gt;&lt;BR/&gt;en el caso de que en el FROM hubiese dos tablas y estas se unieran de forma correcta...el orden de las tablas en el FROM influye en algo? y el orden de las condiciones del WHERE?&lt;BR/&gt;&lt;BR/&gt;Por ej,&lt;BR/&gt;&lt;BR/&gt;FROM empleados e , departamento d&lt;BR/&gt;WHERE e.apellidos='martinez'&lt;BR/&gt;e.id_dept = d.dept_id ;&lt;BR/&gt;&lt;BR/&gt;es mejor poner el "e.id_dept = d.dept_id" antes del e.apellidos='martinez'?&lt;BR/&gt;&lt;BR/&gt;es que tengo esta duda y no se si haras un "SQL TUNING 2 " o algo asi jeje&lt;BR/&gt;&lt;BR/&gt;saludos!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/601081349467686232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26801181/114626350234965876/comments/default/601081349467686232'/><link rel='alternate' type='text/html' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html?showComment=1186490580000#c601081349467686232' title=''/><author><name>evilblues</name><uri>http://www.blogger.com/profile/15178498873721132609</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.plsql.biz/2006/04/puesta-punto-de-sentencias-sql-tuning.html' ref='tag:blogger.com,1999:blog-26801181.post-114626350234965876' source='http://www.blogger.com/feeds/26801181/posts/default/114626350234965876' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1258358687'/></entry></feed>
