Buscar entre 50.000 correos en milisegundos: cómo funciona el índice local de MailVault
Escribe una palabra en MailVault y las coincidencias más recientes aparecen en pantalla antes de que termines de pulsar la tecla. Para comprobar que esto se mantiene cuando un buzón es realmente grande, construimos una bóveda de 50.000 mensajes y medimos la búsqueda. La consulta más lenta que probamos tardó 14 milisegundos.
Esta entrada trae las cifras reales, lo que se midió y lo que no, y la tecnología que hay detrás: una base de datos SQL pequeña y sencilla que vive dentro de tu bóveda.
La prueba
Generamos 50.000 mensajes de unos 3,3 KB cada uno, con la forma multipart de HTML más texto sin formato que tiene el correo real. Los repartimos en tres carpetas (Bandeja de entrada, Archivo y Enviados, aproximadamente un tercio cada una) con palabras conocidas colocadas a ritmos conocidos: «invoice» en el 5 % de los mensajes, «budget» en el 8 %, «meeting» en el 6 %, además de palabras en japonés y con acentos para ejercitar la búsqueda en otros idiomas. Cada mensaje pasó por el analizador MIME real de MailVault y por el código de índice real, en una compilación de release.
La máquina fue un Mac mini Apple M4 con 16 GB de memoria. No estaba ocioso: había otras compilaciones en marcha durante las pruebas, así que toma los tiempos como lo que obtienes en un ordenador ocupado. Cada consulta se ejecutó seis veces, tres sobre una compilación de prueba de la corrección y tres sobre el código ya integrado. Las cifras de abajo son el intervalo de esas ejecuciones, y cada tiempo cubre la búsqueda más la construcción de las filas de resultado que ves en la lista.
Los resultados
50,000 messages · Apple M4 · warm cache · 6 runs each
query matches rows shown time
invoice ~2,500 500 7.1 – 7.5 ms
budget meeting 246 246 13.4 – 14.1 ms
update 4999 15 15 13.5 – 14.0 ms
会議 (Japanese) 1,529 500 4.3 – 4.6 ms
last 7 days, no words 1,008 500 1.0 ms
first index build 11 s (10.9 – 11.9 s)
index size on disk 225 MB
status check 5 ms
De esa tabla se pueden sacar dos conclusiones. Primero, el tiempo no depende del número de coincidencias: 15 resultados tardaron más que 2.500, porque lo que cuesta tiempo es la forma de la consulta (una frase de dos palabras da más trabajo que una sola palabra), no cuánto correo devuelve. Segundo, la lista muestra como máximo las 500 coincidencias más recientes y lo indica cuando hay más, así que dibujar los resultados es un trabajo acotado sea cual sea el número de mensajes que coincidan.

El coste que se paga una sola vez es construir el índice: unos once segundos para 50.000 mensajes, más o menos 4.000 mensajes por segundo, y 225 MB de disco. Ocurre en segundo plano, puedes seguir usando MailVault mientras tanto, y después solo se indexan los mensajes nuevos y los modificados.

Qué se siente con 1 ms y con 7 ms
Los milisegundos son difíciles de imaginar, así que aquí tienes una regla. Una pantalla de 60 Hz se redibuja cada 16,7 ms, y hasta la búsqueda más lenta de esta prueba terminó dentro de un solo redibujado. La investigación de usabilidad usa los mismos tres límites desde 1993: por debajo de 0,1 segundos se siente instantáneo, hasta 1 segundo no se rompe tu hilo de pensamiento, y a los 10 segundos tu atención ya se ha ido. Catorce milisegundos es aproximadamente una séptima parte del límite de lo «instantáneo». El filtro de fechas, con 1 ms, queda cien veces por debajo.
Correo del servidor, archivo y copia de seguridad: una sola búsqueda

MailVault guarda tres tipos de correo juntos: los mensajes sincronizados desde tu servidor, los que archivaste y los restaurados desde una copia de seguridad. Todos acaban como archivos en la misma bóveda, así que todos entran en el mismo índice. En la prueba, el correo estaba en una Bandeja de entrada, un Archivo y una carpeta Enviados, y una sola consulta lo cubrió todo. De dónde venga un mensaje no cambia lo rápido que se encuentra.
El correo que solo está en el servidor y nunca se ha descargado no está en la bóveda, así que el índice local no puede conocerlo. Para eso, MailVault también pregunta al servidor, y los resultados locales indexados aparecen primero mientras el servidor responde. Ese tramo depende de tu proveedor, así que no publicamos ninguna cifra para él. Premium puede buscar en hasta cinco buzones del servidor a la vez en lugar de uno.
La unidad externa de copia de seguridad es una segunda copia en frío. La búsqueda se ejecuta sobre tu bóveda de trabajo, y los resultados se marcan cuando también existe una copia en la unidad de copia de seguridad.
La tecnología: una base de datos SQL muy rápida y muy simple
No hay servidor de búsqueda ni servicio en la nube. El índice es un único archivo SQLite dentro de tu bóveda, y SQLite es probablemente la base de datos más extendida del mundo. MailVault usa su motor de búsqueda de texto completo, FTS5, con un tokenizador trigram: cada palabra se guarda como fragmentos solapados de tres letras. Por eso puedes escribir «voic» y encontrar «invoice», sin comodines ni reglas de palabra exacta. Los acentos se normalizan, así que «reunion» encuentra «Réunion». El japonés y el chino, que no usan espacios entre palabras, pasan por una segunda tabla creada para ellos.
La velocidad viene de tres decisiones sencillas:
- La búsqueda nunca abre un archivo de mensaje. Todo lo que necesita la lista (remitente, asunto, fecha, carpeta, marcas) está guardado en la fila del índice. Durante la prueba de 50.000 mensajes, el analizador de correo se llamó cero veces mientras se construían los resultados.
- Un archivo, un proceso. El índice pertenece al ayudante en segundo plano de MailVault, que lo abre una sola vez y lo mantiene listo. No hay nada que iniciar ni nada que enviar por una red.
- Tu disco sigue siendo la fuente de verdad. El índice son datos derivados. Si alguna vez se daña, MailVault lo reconstruye a partir de tus mensajes guardados y nunca toca los mensajes en sí.
Funciona sin conexión y nada sale de tu ordenador.
Adjuntos e imágenes (Premium)
La búsqueda gratuita cubre remitentes, asuntos y cuerpos de mensaje. Premium añade el texto que hay dentro de los adjuntos, en el mismo índice y el mismo cuadro de búsqueda:
- Texto de los adjuntos. Se leen los archivos PDF, Word, Excel y PowerPoint y se indexa su texto, así que buscar un número de contrato encuentra el mensaje cuyo PDF lo contiene.
- Texto de imágenes y escaneos en macOS. MailVault usa el framework Vision de Apple en tu Mac para reconocer el texto de fotos, capturas de pantalla y páginas escaneadas, y después lo indexa. El reconocimiento se ejecuta en el propio dispositivo. Windows y Linux no tienen este paso.
Un resultado que existe solo dentro de un adjunto se marca con un clip, para que sepas por qué ha aparecido un correo con un cuerpo sin nada especial. En esta prueba no medimos la extracción de los adjuntos: depende de tus archivos y se ejecuta una vez por adjunto en segundo plano, no en el momento de buscar.
Cómo describen su búsqueda otros clientes
No hemos hecho benchmarks de otras apps de correo, y ninguna de las siguientes publica tiempos de búsqueda con 50.000 mensajes, así que esto es una comparación de diseños, no de cronómetros:
- Apple Mail: Apple indica que la primera indexación de Spotlight puede tardar horas o incluso días según la cantidad de datos, y que Mail puede mostrar un aviso de que la indexación aún no ha terminado.
- Outlook para Windows usa el índice de Windows Search, y Microsoft señala que los resultados pueden estar incompletos hasta que termine la indexación, que solo se indexa el correo en caché local y que los elementos más antiguos pueden quedar ocultos cuando una búsqueda devuelve demasiados.
- Thunderbird mantiene un índice global en su propia base de datos. Su sistema de seguimiento de errores acumula desde hace tiempo informes sobre la indexación que se ralentiza en buzones grandes, incluido el de un usuario que habló de varios días para 36.000 mensajes. Son informes de usuarios con hardware más antiguo y no son directamente comparables con nuestra prueba.
Nuestra decisión de diseño es la contraria a la habitual: indexamos tu propia copia guardada, la mantenemos en un archivo pequeño y hacemos que el camino de la consulta sea lo bastante corto como para que la respuesta se mida en milisegundos.
Lo que esta prueba no muestra
El buzón es sintético. El correo real tiene mensajes más grandes y desordenados, así que el índice será mayor en tu caso si tus cuerpos de mensaje son largos, aunque una consulta sigue recorriendo el índice, no tus archivos. Los tiempos son con la caché caliente: la primera búsqueda tras reiniciar lee más del disco. La prueba cubre asuntos, remitentes y cuerpos, no el texto de los adjuntos, y se hizo en una sola máquina.
Puedes repetir la medición tú mismo: el benchmark es el test de Rust ignorado search_index_bench_50k_real_parser del código fuente de MailVault, y muestra todas las cifras anteriores.
Encuentra ese correo de hace seis años en milisegundos.
MailVault guarda un índice de búsqueda privado junto a tu archivo, así que buscar entre 50.000 mensajes es tan fácil como entre 500. Uso gratuito. La búsqueda en adjuntos e imágenes viene con Premium.
Fuentes: Soporte de Apple, indexación de Spotlight; Soporte de Microsoft, problemas de búsqueda en Outlook; Mozilla Bugzilla 585429. Benchmark medido el 21 de septiembre de 2026.