Низкая производительность INFORMATION_SCHEMA.key_column_usage в MySQL

Я использую версию 5.5.11 MySQL, и производительность при запросе таблицы INFORMATION_SCHEMA.key_column_usage очень плохая.

У меня есть простой запрос на выбор:

SELECT REFERENCED_TABLE_NAME
       , TABLE_NAME AS TableName
       , COLUMN_NAME AS ColumnName
       , CONSTRAINT_SCHEMA AS Db 
FROM INFORMATION_SCHEMA.key_column_usage 

В среднем требуется 8 секунд, чтобы вернуть 400 строк. Это известная проблема? Если да, то есть ли способ улучшить производительность (может быть, патч?).


person Mathieu    schedule 02.09.2011    source источник
comment
information_schema представляет собой представление всех таблиц, находящихся во всей базе данных. Я не удивлюсь, если она будет работать медленно.   -  person ajreal    schedule 02.09.2011


Ответы (2)


Используя приведенный там совет: http://www.mysqlperformanceblog.com/2011/12/23/solving-information_schema-slowness/

Я переключился с секунд на сто миллисекунд для того же запроса. Эта настройка спасла мой день:

innodb_stats_on_metadata=0
person nfroidure    schedule 21.09.2013

Я нашел здесь интересную статью: http://dev.mysql.com/doc/refman/5.5/en/information-schema-optimization.html

Я добавил WHERE TABLE_SCHEMA = 'myTable' в свой запрос и получил значительное улучшение производительности: с 8 секунд до 0,2!

person Mathieu    schedule 06.09.2011