El 26 de junio de 2009 14:00, Alvaro Herrera<alvhe...@alvh.no-ip.org> escribió: > Emanuel Calvo Franco escribió: > >> Realicé unos bench (obviamente fueron hechos on-the-fly :) = propenso a >> errores. > > No entendí el propósito de la prueba :-( >
Lo que hice fue crear dos columnas, una con valores NULL y la otra sin valores NULL. hice un indice para cada columna (en realidad debería haber probado con más tipos, al menos con HASH). Luego realice la busqueda por un determinado valor. Si te fijas, vas a ver que hubo una diferencia de tiempo en cuanto a rendimiento (al menos en los Btree). Inclusive, realice más búsquedas y en todas hubo una diferencia a favor de las columnas que no tenían valores NULL. >> Tengo entendido que en la mayoría de los motores, los valores NULL >> afectan los indices. > > ¿En qué sentido afectan? En Postgres los valores NULL también están en > el índice. De hecho si no son muchos, el optimizador usará un índice en > esa columna para buscar los valores que concuerden con una cláusula del > tipo "siNULL IS NULL" > Por eso dije 'en la mayoría de los motores'. Por ejemplo, se que en Mysql si afectan los valores NULL en las tablas sobre los indices. Existen comprobaciones extras que pueden afectar el rendimiento. Inclusive en pruebas que estoy realizando ahora, estoy viendo una diferencia a considerar entre indices que contienen valores NULL y los que no, en una cantidad de registros de ~ 1000000. Sinceramente me gustaría saber con más detalle el porque de esta diferencia, aunque en teoría no debería haberla... o si? -- Emanuel Calvo Franco ArPUG [www.arpug.com.ar] / AOSUG Member www.emanuelcalvofranco.com.ar -- TIP 1: para suscribirte y desuscribirte, visita http://archives.postgresql.org/pgsql-es-ayuda