2011-08-10 12 views
6

Me pregunto cómo funcionan debajo del capó, especialmente para grandes conjuntos de resultados. Por ejemplo, ¿el DB probablemente escribiría el resultado en bruto en el disco y luego haría una ordenación externa?¿Cómo implementan las bases de datos SQL 'ORDER BY x'?

También me pregunto cómo funciona esto con LIMIT ... OFFSET. Si el DB no puede utilizar un índice existente, parece que el DB tendría que ordenar todo y obtener el subconjunto del conjunto de resultados sin procesar.

Respuesta

1

MySQL muestra su propia Orden Por optimización de this link

Oracle muestra teor propia Orden Por un procedimiento algoritmo here

Básicamente, si usted tiene un índice, se ordena. Pero cuando no se realiza la clasificación, que es O(n log n)

0

Tiene prácticamente todo el derecho a ello. Si no se preparó ni planeó nada (es decir, índices o datos previamente preparados o almacenados en caché), entonces sí, se deben leer todos los datos que se deben considerar para generar el orden correcto y si la cantidad de datos a ser trabajado no puede caber en la memoria disponible/asignada, entonces el almacenamiento en caché del disco tendrá que hacerse.

Es un problema de rendimiento no trivial, y cada RDBMS tendrá formas inteligentes de abordarlo y optimizarlo, para que pueda utilizar su producto y no ese imitación de la marca "Marca X".

Cuestiones relacionadas