Select que tarda mucho

Hola, te cuento mi problema:
Al hacer un select * de una tabla con 1600 registros, me tarda unos 7 segundos. Si le pongo un WHERE para que devuelva unos pocos, es inmediato.
La tabla tiene un indice compuesto por tres campos, y el select lleva el order by por esos tres campos.
He comprobado con SET EXPLAIN ON, que utiliza el indice.
He cambiado varios parámetros del ONCONFIG, y lo peor es que no noto ni que mejore ni que empeore. Ya no se que hacer.
La fila de la tabla es grande, con muchos VARCHAR, en total son 18 columnas y row size=678
He notado que al ejecutar la consulta, la CPU se pone al 100%
Espero que me puedas dar alguna pista, porque ya no se por donde tirar.
Gracias

1 respuesta

Respuesta
No se muy bien, pero la ordenación es más lenta si ordenas por campos alfanuméricos, no es lo mismo ordenar por campos numéricos que por campos alfanuméricos.
La ordenación es por tres campos, el primero INTEGER, el segundo DATE y el tercero VARCHAR.
Creo que solo 1600 registros no es como para tardar tanto...
Saludos y gracias
Prueba definirte un índice por cada columna, sobre todo en la columna 'varchar'. A mí me pasó lo mismo una vez, tenía una tabla con unos 2000 registros y me tardaba 15 segundos, le definí un índice y se solucionó. Otra cosa a tener en cuenta son los diferentes tipos de índices
Que adminte una base de datos (clustered, no clustered, ...).
Ya lo he probado. En vez de tener un indice por las tres columnas, he creado tres indices, uno por cada columna.
También he probado a poner el indice CLUSTER, aunque no me valdría ya que es una tabla en la que se inserta y borra constantemente.
Saludos y gracias
Es que ordenar por un campo varchar es muy lento, ten en cuenta que ordena carácter a carácter. No se me ocurre otra cosa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas