Cuente desde una tabla, pero deje de contar en un cierto número

¿Hay alguna manera en MySQL de 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 loggings 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.

Pude fudgearlo 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 de hacerlo.


Gracias por las sugerencias, pero debería haber sido más claro sobre las razones detrás de esta pregunta. Es seleccionar de un par de tablas unidas, cada una con decenas de millones de loggings. La ejecución de COUNT(*) utilizando un criterio indexado todavía demora unos 80 segundos, ejecutar uno sin un índice toma aproximadamente 30 minutos más o less. Se trata más de optimizar la consulta en lugar de get el resultado correcto.

 SELECT * FROM WhateverTable WHERE WhateverCriteria LIMIT 100, 1 

LIMITE 100, 1 devuelve el logging 101º, si hay uno, o no hay logging de lo contrario. Es posible que pueda utilizar la consulta anterior como una subconsulta en cláusulas EXIST, si eso ayuda.

No puedo pensar en nada. Me parece que lo que estás haciendo cumple exactamente con el propósito, y SQL ciertamente no parece haber salido de su path para que sea más fácil para ti hacer esto de manera más sucinta.

Considere esto: lo que está tratando de hacer no tiene sentido en un context estricto de aritmética establecida. Matemáticamente, la respuesta es contar todo y luego tomar el MIN() con 100, que es lo que estás (pragmáticamente y con buena razón) tratando de evitar.

Esto funciona:

 select count(*) from ( select * from stockinfo s limit 100 ) s 

pero no fue más rápido (que pude decir) de solo:

 select count(*) from stockinfo 

que devolvió 5170965.