SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.10.2010 10:37:34

cooler
Завсегдатай
Зарегистрирован: 14.01.2010
Сообщений: 52

Оптимизация таблиц

Здравствуйте! Имеетеся сервер с "большой" нагрузкой, на  котором стоит UBUNTU 10.04 (64) и MySQL 5.3. Есть база состоящая из таблиц на движке innodb.  Каждая таблица имеет хотябы одну связь по внешнему ключу (с каскадным удалением). Скорость работы субд пока устраивает, но есть 1 ньюанс, в таблице с 1 млн. записями запрос типа "SELECT COUNT(*) FROM `table1`" выполняется порядка 5 минут! а В к таблице с 14 млн. больше 15 мин. (дальше надоело ждать). Подскажите с чем это связано и как можно решить эту проблему? Что если мне в дальнейшем понадобится в приложение узнавать общее количество записей?! Причиной этому могут быть внешние ключи? Зарание благодарен за Ваши советы!

Неактивен

 

#2 07.10.2010 12:03:34

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Оптимизация таблиц

Нет, не могут: в случае с COUNT(*) Вам нужно обойти весь главный ключ
и честно посчитать количество нод — это длительная операция.

Если Вас устроит приблизительное значение, Вы можете использовать
SHOW TABLE STATUS LIKE 'tablename'.

Если нужно точное значение — нужно делать денормализационную табличку,
в которой хранить уже нужное количество строк.

Неактивен

 

#3 07.10.2010 13:04:02

cooler
Завсегдатай
Зарегистрирован: 14.01.2010
Сообщений: 52

Re: Оптимизация таблиц

Спасибо за совет. Тема закрыта.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson