sql >> Base de Datos >  >> RDS >> PostgreSQL

¿A qué cardinalidad cambia SQL Server a un escaneo de índice (frente a búsqueda)?

En términos de SQL Server, esto se conoce como el punto de inflexión, del cual la publicación de blog de Kimberley es una buena lectura. http://www.sqlskills.com/BLOGS/KIMBERLY /category/El-punto-de-inflexión.aspx

El punto de inflexión es una pauta del 25 % al 33 % del número total de páginas dentro de la tabla, expresado como filas, p. 10k páginas de datos darían un punto de inflexión de 2500-3333 filas. Según las pautas, esto es bastante bueno, y lo mejor que obtendrá:recuerde que el motor del plan de consulta es una caja negra y, aunque le dará un plan de consulta, solo dice lo que decidió, no por qué.

Sin embargo, en términos de inclinar un índice de cobertura, en realidad no es muy fácil, incluso con el 100 % de los datos seleccionados, un índice de cobertura aún buscará el escaneo en la mayoría de los casos.

Eso tiene sentido, si considera que el optimizador de costos no asigna ningún costo real a la jerarquía de páginas de índice, cualquiera solo cuesta el acceso a las páginas hoja del índice. En ese momento, escanear o buscar el 100 % de un índice de cobertura tiene el mismo costo.

Encontré a partir de mi propia experimentación (http://sqlfascination.com/2009/11/07/can-a-covering-nc-index-be-tipped ) el uso de una cláusula between haría que escaneara, pero otras cláusulas where no lo harían; por lo que pude ver, se debió únicamente a la ruta a través del motor de consulta.