I missed part of the initial discussion so sorry if this isn't quite what you're looking for, but if you're talking about the query cache (the one that caches the exact query and the exact results), this output can be useful:

mysql> show status like "Q%";
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 1        |
| Qcache_free_memory      | 33535648 |
| Qcache_hits             | 2        |
| Qcache_inserts          | 2        |
| Qcache_lowmem_prunes    | 0        |
| Qcache_not_cached       | 0        |
| Qcache_queries_in_cache | 2        |
| Qcache_total_blocks     | 6        |
| Questions               | 362      |
+-------------------------+----------+
9 rows in set (0.00 sec)

From here you can watch in real time for Qcache_hits. "Questions" is the
total number of queries. Indeed, LIMIT queries are cached, but just the part that was returned.

If the query is the slightest bit different when run again, or if any of the underlying tables have been written to, the query cache will be ignored. But the data itself will most likely be in memory the next time around so it will be faster than the first run anyways.

Just some food for thought.

Cheers,
Jonathan Field

On Sun, 2 Apr 2006, Perrin Harkins wrote:

On Mon, 2006-04-03 at 10:28 +0800, Foo Ji-Haw wrote:
Perrin Harkins wrote:
Jeff wrote:
Your application simply uses approach (b) and MySQL does the rest
automatically. So if you
Have you tried this?  I was under the impression that MySQL would just
stop when it finds enough row to satisfy LIMIT, so it wouldn't cache
the whole result set.
I have, and I can verify that MySQL does some kind of internal
'caching', so that the next limit call is very fast.

How do you know it isn't just the operating system caching the disk
fetches?  The docs certainly make it sound like a query cached with
LIMIT will not be useful when different LIMIT values are applied.

- Perrin

Reply via email to