Skip to content

Why MySQL FULLTEXT is Slow

MySQL FULLTEXT search becomes painfully slow as your data grows. Here's why, and how MygramDB solves it.

The Problem

Disk I/O Bottleneck

MySQL FULLTEXT stores indexes on disk using B-tree pages. Every search query requires:

  1. Reading B-tree pages from disk
  2. Loading posting lists into memory
  3. Sorting results (often with external sort)

Even with SSDs, this I/O overhead adds 100-3000ms per query.

Uncompressed Posting Lists

MySQL stores posting lists without compression. For common terms matching millions of rows, this means:

  • Reading megabytes of data per query
  • Memory pressure on buffer pool
  • Cache thrashing under concurrent load

Cache Dependency

Performance varies significantly between cold and warm cache. In benchmarks on 1.1M Wikipedia articles, MySQL FULLTEXT latency ranged from 300ms to 2,566ms depending on query and cache state.

In production, cache is often cold after restarts, deployments, or buffer pool contention.

Concurrency Collapse

Under concurrent load, MySQL FULLTEXT throughput drops dramatically:

SolutionConcurrent ConnectionsQPS
MySQL FULLTEXT1-42-8
MygramDB1-42,634-11,766

MySQL FULLTEXT delivers only single-digit QPS even at low concurrency, while MygramDB sustains thousands of queries per second.

The Solution: MygramDB

MygramDB solves these problems with a fundamentally different architecture:

In-Memory Index

All data lives in RAM. Zero disk I/O during queries.

Compressed Posting Lists

Delta encoding + Roaring bitmaps reduce memory usage by 60-80% while enabling faster intersections.

SIMD-Accelerated Operations

Bitmap intersections use CPU SIMD instructions for maximum throughput.

Consistent Performance

No cache warmup needed. Sub-millisecond response time (0.08-0.42ms), always. See Benchmarks for full results.

Real-time MySQL / MariaDB Sync

GTID-based binlog replication keeps MygramDB in sync with MySQL 8.4/9.x or MariaDB 10.6+/11.x. No ETL pipelines, no data staleness.

When to Use

MygramDB is ideal for:

  • High-traffic web services — E-commerce, news sites, Q&A platforms with many concurrent users
  • Real-time search requirements — When users expect instant results
  • FULLTEXT queries >100ms — Slow searches hurting user experience
  • Search fails under load — Timeouts during traffic spikes

Ready to try it? See Quick Start or GitHub for full documentation.