13 messages in com.mysql.lists.mysql-esRe: consulta de performance| From | Sent On | Attachments |
|---|---|---|
| Anarkae | 07 Feb 2008 06:47 | |
| Grover Campos A. | 07 Feb 2008 08:06 | |
| Gustavo Pardo | 07 Feb 2008 08:10 | |
| Gustavo Pardo | 07 Feb 2008 09:03 | |
| carlos | 07 Feb 2008 09:27 | |
| MARIO BENAVIDES JURADO | 07 Feb 2008 09:32 | |
| Grover Campos A. | 07 Feb 2008 11:23 | |
| Gustavo Pardo | 07 Feb 2008 12:11 | |
| Anarkae | 07 Feb 2008 12:26 | |
| Renato Olivares | 07 Feb 2008 12:43 | |
| Cruz, Edwin (GE, Corporate, consultant) | 07 Feb 2008 13:19 | |
| MARIO BENAVIDES JURADO | 07 Feb 2008 13:38 | |
| Grover Campos A. | 07 Feb 2008 14:05 |
| Subject: | Re: consulta de performance![]() |
|---|---|
| From: | MARIO BENAVIDES JURADO (cor...@mariobj.com) |
| Date: | 02/07/2008 09:32:23 AM |
| List: | com.mysql.lists.mysql-es |
Hola,
Exacto hay un problema en el uso de indice de campos duplicados, el declarar un indice en campos de las posibles opciones seran solo (1 o 0), lo unico que hace es ralentizar las operaciones sobre la tabla. Mira el indice tiene la misma funcionalidad que el de un dicccionario, si vas a buscar el siginificado de la palabra "optimizar", tu no recorres el diccionario desde la A a la Z hasta que te encuentres con la palabra verdad?, simple vas hasta el grupo de la letra O y alli de hace la busqueda. Los indices se crearon para optimizar consultas WHERE de Seleccion. Los indices no son recomendados para operaciones de insercion, actualizacion o borrado.
Ahora volviendo al tema de las opciones 1 o 0 en una columna, el resultado de un select sobre esa columna devolvera 1 o 0 solamente....bueno supongamos que para esa columna existen 15.000 registros 10.000 marcados con 1 y 5.000marcados con 0, no tiene sentido poner al indice a recorrer 10.000 registros marcados con el mismo valor en cada consulta.
La mejor regla para saber si usar indices es: asignar los indices a columnas que van a tener una gran variedad de opciones, para las cuales sea necesario tener indices de agrupamiento, no es buena idea tener indices en columnas con valores repetitivos o identicos.
Por ultimo recordar que los indices ocupan espacio, asociado para cada tabla, y cuando las tablas son grandes los indices tienden a ocupar mas espacio que las tablas en si mismas, ah y no lo olviden tampoco indexen campos tipo texto.
Espero les sirva de ayuda
Hasta pronto.
2008/2/7 Gustavo Pardo <data...@gmail.com>:
El jue, 07-02-2008 a las 13:07 -0300, Grover Campos A. escribió: ...
Por otro lado, para miles de registros tendrías que evaluar la
posibilidad de utilizar un índice, así ese índice se haría un cluster de datos para dos valores nada más, sería mucho más rápido. Sin índices en los miles de registros debe evaluar el where, no le queda de otra al motor.
hola Grover,
tal vez me alejo un poco de la consulta original, pero no del asunto en sí.
cuando comencé a aprender mysql, a los palos :) , una de los primeros tutos que leí dice lo siguiente:
Así que antes de indexar una columna, debemos considerar que porcentaje de entradas en la tabla son duplicadas. Si el porcentaje es demasiado alto, seguramente no veremos alguna mejora con el uso de un índice. Fuente: http://www.mysql-hispano.org/page.php?id=23&pag=6 (6to.párrafo)
y luego
Note that if you need to access most of the rows, it is faster to read sequentially, because this minimizes disk seeks. Fuente: http://dev.mysql.com/doc/refman/5.0/es/mysql-indexes.html (final del primer párrafo)
realmente yo no tengo fundamentos teóricos como para decir si estas afirmaciones son correctas o no. pero ahora me queda la duda, ya que yo también uso campos tinyint(1) para emular tipos boolean y no los indexo a propósito basado en los textos citados.
¿tú qué piensas? saludos a todos. -- Gustavo Pardo Dataneu Argentina Software & Web Hosting Web: http://dataneu.com/ Tel.(+54 299) 489 6880 Centenario, NQN - Argentina
-- Lista de Correos de MySQL Para el historial de la lista: http://lists.mysql.com/mysql-es Para cancelar inscripción: http://lists.mysql.com/mysql-es?unsub=mari...@gmail.com
-- Mario Benavides Jurado Administrador de Sistemas Informaticos Desarrollador LAMP Email: cor...@mariobj.com Web-Site: www.mariobj.com
_______________________________________________ Que seria de nosotros, sin la ayuda de lo que no existe? Paul Valery - Breve Epistola sobre el Mito




