¿Hay alguna manera en MySQL para COUNT(*)
de una tabla donde si el número es mayor que x
, dejará de contar allí? Básicamente, solo quiero saber si la cantidad de registros devueltos por una consulta es mayor o menor que un número en particular. Si es más que ese número, realmente no me importa cuántas filas hay, si es menor, dígame el recuento.Contar desde una tabla, pero dejar de contar en un cierto número
he sido capaz de eludir así:
-- let x be 100
SELECT COUNT(*) FROM (
SELECT `id` FROM `myTable`
WHERE myCriteria = 1
LIMIT 100
) AS temp
... pero me preguntaba si había alguna manera práctica incorporada para hacer esto?
Gracias por las sugerencias, pero debería haber sido más claro sobre los motivos de esta pregunta. Es seleccionar de un par de tablas unidas, cada una con decenas de millones de registros. La ejecución de COUNT(*)
utilizando un criterio indexado aún demora aproximadamente 80 segundos, ejecutar una sin un índice toma aproximadamente 30 minutos más o menos. Se trata más de optimizar la consulta en lugar de obtener el resultado correcto.
me temo que en este caso la comprobación para si COUNT()> 100 o COUNT()> 1000 o COUNT()> 10000 no hará ninguna diferencia. –
sí lo sé, es por eso que estoy haciendo la sub consulta con LIMIT, me preguntaba si había una mejor manera de eliminar – nickf
mi respuesta cuando vi su edición/intención. Supongo que su respuesta en su pregunta es la más óptima –