Are you using MyIsam or InnoDB? Or something else?
In either case the speed to get a COUNT() is largely down to the speed
if your disks and size of disk caching. A COUNT() forces the system to
read every row in order to count them, and any large table is probably
larger than your caches.
In some ways this is not so important, since it is unusual for a query
to want to read every row of a table. (I have 250GB tables which have
excellent performance but would take minutes to count every row :)
It might be better to consider the type of queries you will be using,
and the type of table, and optimise for that...
Ben
Victor Danilchenko wrote:
Hi,
I am trying to optimize our DB server. We have one table which has
1.3M entries, and the keys are GUIDs (so the key space is large).
However, I have it all indexed. The performance was iffy, though, so I
increased memory allocation, and the searches on the indexed fields seem
to be OK now. Still, a simple count(field) on this table still takes,
like, 2 minutes! I am guessing i am missing something obvious, but I
read through a few MySQL optimization guides, and it seems like i am
covering my bases.
Here is the relevant slice of my my.cnf:
#
# * Fine Tuning
#
key_buffer = 256M
max_allowed_packet = 64M
thread_stack = 512K
thread_cache_size = 32
#
# * Query Cache Configuration
#
query_cache_limit = 32M
query_cache_size = 256M
query_cache_type = 1
table_cache = 512
sort_buffer_size = 32M
I am running Ubuntu 7.04, with 1GB of RAM. The relevant fields are
all indexed, but I can't imagine why a simple count() would take so
long, when the actual query by value on the same field is effectively
instant (after my cache setting expansion).
Does anyone have an idea of what I am missing? Also, if you think
any of the above settings seem wrong for a server with 1GB of RAM,
please let me know.
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]