![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Por eso digo, es que yo siempre uso count(campoclave)
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#2
|
||||
|
||||
|
Hola,
respecto a lo de count(1), yo no lo sabía hasta que hace un año un "gurú" me dijo que lo hiciera así. Es una persona con conocimientos de Oracle de muchísimo nivel. Cuando pueda le preguntaré porqué es más eficiente. Bajo mi punto de vista, y dado que cuando haces un count de un campo el motor debe evaluar si es nulo o no, ahí puede haber una pérdida de tiempo. Sin embargo, si pones count(1), solamente revisará si hay registro o no, independientemente del valor que tengan los campos. Aunque esto indudablemente dependerá de cada motor de bbdd , de cómo parsee las sentencias sql y qué ejecute realmente tras el parseo. Ya sabeis que los motores en ocasiones hacen una transformación de las sentencias sql para optimizar los resultados ( aunque en ocasiones consigan lo contrario). Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#3
|
||||
|
||||
|
Eso depende de cada motor, aunque se sostiene en general lo que puse en el link. Basicamente:
SELECT COUNT(*) Es un alias a SELECT Count(Tabla) SELECT COUNT(UNA CONSTANTE) Cuenta sobre EL RESULTSET. SELECT COUNT(UnCampo) Cuenta sobre EL CAMPO El link de http://www.postgresqltutorial.com/po...ount-function/ esplica los PROS y CONTRAS. Es importante entender esto, porque COUNT es una función de agregado, y dependiendo de que se le este metiendo a esa función PUEDE OPERAR DE FORMA DIFERENTE, así como SUM, AVG y demás operan diferente dependiendo de que le metas. Cuando se hace COUNT(1) es un "truco" que se aplica erroneamente: http://stackoverflow.com/questions/1...ount-vs-count1 A proposito, en términos generales COUNT tiende a ser ineficiente, y de forma diferentes en cada motor. PostgresSql sufre mucho en este aspecto. Es por eso que la respuesta mejor a "como puedo hacer pasa conocer cuantos registros obtengo en un select en un stored procedure" NO ES repetir la consulta de nuevo con un COUNT! Es preguntarle al cursor cuantos resultados ya tiene (ej: user .recordcount). Count se debe usar como una funcion de agregado. Yo no vuelvo a sumar una columna que ya sume. Yo no vuelvo a contar la tabla que ya tengo en mi cursor.
__________________
El malabarista. |
|
#4
|
||||
|
||||
|
Cita:
// Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Cuantos registros devuelve una consulta | kizé | MySQL | 1 | 25-10-2010 10:13:30 |
| Saber cuantos registros tiene un GridView | JuanErasmo | .NET | 1 | 02-01-2007 21:19:32 |
| dbGrid como devuelve el numero de registros | omarifr | Conexión con bases de datos | 3 | 15-07-2005 20:56:58 |
| Saber cuantos registros origino la consulta | JorgeBec | SQL | 1 | 12-11-2004 16:48:17 |
| Select Max siempre devuelve valor | FernanGil | Conexión con bases de datos | 3 | 06-10-2003 15:55:36 |
|