Decir que SELECT COUNT(*) vs COUNT(1)
resultados en su DBMS regresar " columnas "es pura litera. Eso puede haber sido el caso hace mucho, mucho pero cualquier optimizador de consultas se precie va a elegir un método rápido para contar las filas de la tabla - no es NO diferencia de rendimiento entre SELECT COUNT(*), COUNT(1), COUNT('this is a silly conversation')
Por otra parte, SELECT(1) vs SELECT(*)
no lo hará tiene alguna diferencia en el uso de ÍNDICE; la mayoría de los DBMS realmente optimizarán SELECT(n) into SELECT(*)
de todos modos. Ver el TOM ASK: Oracle ha sido la optimización de SELECT(n) into SELECT(*)
para la mayor parte de una década, si no más: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1156151916789
problema es en el recuento (col) para contar () conversión ** 03/23/00 05:46 pm *** una solución consiste en establecer el evento 10122 a desactivar count (col) -> count () optimización.Otro ejemplo es para cambiar el conteo (col) a contar (), significa lo mismo, cuando el col tiene una restricción NOT NULL. El número de error es 1215372.
Una cosa a notar - si está utilizando COUNT (col) (! No lo hacen) y col es marcada NULL, lo que realmente tendrá que contar el número de apariciones en la tabla (ya sea a través de escaneo de índice, histograma, etc., si es que existen, o un escaneo completo de tabla de lo contrario).
En pocas palabras: si lo que quiere es el recuento de filas en una tabla, utilice COUNT (*)
No es correcto decir que no hay diferencia entre select (n) y select (*). Si tiene un índice de cobertura que incluye n, obtiene los datos directamente del nivel de hoja del índice y no tiene que volver a la tabla, que es mucho más rápido. –
El optimizador de DBMS * se dará cuenta * de esto y elegirá el índice correcto para el trabajo. Siempre que haya un índice, es raro el día en que he visto un DBMS ** contar ** filas en la mesa. Además, la presencia de NULL a menudo causa errores semánticos. Cuando quieras el # de filas en una tabla, usa COUNT (*) !!! –