Hola Mariano ! Yo antes de esta auditoría nunca me había parado a pensarlo, ni lo había visto documentado.
Cuando llegué al entorno los desarrolladores habían detectado que había una consulta que, cuando pasaba determinada cantidad de registros (800.000 si no recuerdo mal) quedaba ejecutándose durante horas con muy poca utilización de recursos en el servidor (coloquialmente se moría :) ). La sentencia que se moría era esta: INSERTINTO #la_tabla_temporal SELECT campos.... FROM tabla_externa WHERE EXISTS( SELECT #otra_tabla_temporal.uncampo FROM #otra_tabla_temporal WHERE #otra_tabla_temporal.id = tabla_externa.id) Les pedí a los desarroladores que eviten las tablas temprales usando estas recomentaciones: http://www.sql-server-performance.com/articles/per/derived_temp_tables_p1.aspx http://www.sql-server-performance.com/articles/per/derived_temp_tables_p2.aspx Y conseguimos un stored que (si bien consume sus recursos) no presenta el comportamiento de "quedarse pensando" 1 hora. Tenes razón respecto a la nomenclatura, en Oracle les llaman in-line views o queries, aca son Tablas Derivadas, básicamente un select de un select: SELECT * FROM (SELECT * FROM categories) dt_categories Un saludo !!! Mariano Minoli ________________________________ From: Jose Mariano Alvarez <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Sent: Friday, November 14, 2008 4:22:18 AM Subject: [dbms] Tablas temporales Mariano: No se que cambios hicieron exactamente y si te referis a una tabla derivada. Es casi exactamente lo mismo una tabla derivada que una tabla temporal. Por otro lado dependiendo del caso (#registros y uso de los mismos) una tabla temporal puede acelerar las cosas o enlentecerlas respecto de otras alternativas. Una tabla temporal puede tener indices por ejemplo. Si remplazaros todo el proceso (multiples pasadas sobre la temporal) por una query es otra cosas Saludos -------------------------------- Atte. Ing. Jose Mariano Alvarez SQL Total Consulting 2008/11/12 Mariano Minoli <[EMAIL PROTECTED]> Hola Sonia, Solo un comentario respecto a las tablas temporales: cuidado con la cantidad de datos que cargas allí. Hace poco hicimos una auditoría de performance en un sistema que cargaba + de 900.000 de registros en una tabla temporal y luego comenzaba a hacer consultas sobre la misma. El servidor se moría. Reemplazamos la tabla temporal por un inline query y quedo funcionando bien. Un saludo, Mariano Minoli ________________________________ From: silvana quiroga <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Sent: Wednesday, November 12, 2008 2:33:09 PM Subject: [dbms] Tablas temporales No coinciden. Se crea una por cada conexión. Si tu tabla se llama #table, fijate que en las tablas del sistema te crea la tabla #table_00000..., #table_00001, etc. es decir, le agrega un número al final para diferenciarlas. 2008/11/12 Sonia Perez Peña <[EMAIL PROTECTED]> -----Mensaje original----- De: Sonia Perez Peña Enviado el: miércoles, 12 de noviembre de 2008 7:54 Para: '[email protected]' Asunto: Tablas temporales Hola amigos, que riesgos puedo tener al utilizar tablas temporales #Table, se que estas se crean en la TEMPDB, por la que tengo que competir con el espacio de memoria de la TEMPDB., fuera de esto que otra cosa, se que cuando un usuario se desconecta, pero mi preocupación es cuando n usuarios, pueden coincidir con la construcción de la misma. ¿???? Gracias.
