2017-01-11 2 views
0

У меня есть таблица со следующей схемой:ПОВЫШЕНИЕ таблицы MYSQL Performance

CREATE TABLE `type_interests` (
    `id` int(11) NOT NULL, 
    `interest_id` int(11) NOT NULL, 
    `type_id` int(11) NOT NULL, 
    `type` varchar(64) NOT NULL, 
    `status` varchar(64) NOT NULL, 
    `created_date` datetime NOT NULL, 
    `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `notes` varchar(64) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

ALTER TABLE `type_interests` 
    ADD PRIMARY KEY (`id`), 
    ADD KEY `interest_id` (`interest_id`,`type_id`), 
    ADD KEY `interest_id_2` (`interest_id`); 


ALTER TABLE `type_interests` 
    MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=31415; 

ALTER TABLE `type_interests` 
    ADD CONSTRAINT `type_interests_ibfk_1` FOREIGN KEY (`interest_id`) REFERENCES `interests` (`id`); 

И у меня есть только около 30 000 записей в базе данных, но все запросы, которые используют эту таблицу потребляет много времени, это дизайн проблема? обратите внимание, что type_id привязан к нескольким таблицам.

+0

Можете ли вы показать нам запросов/запросы которые занимают много времени? Сверху моей головы, возможно, вы не используете никаких индексов. –

+0

Я думаю, что SHOW CREATE TABLE покажет таблицу более элегантно – Strawberry

+0

Я добавил индекс ('type', 'type_id'), и он решил проблему –

ответ

1

Вы должны индексировать таблицу должным образом, более подробная информация здесь: http://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html

Это зависит от вашего сервера Aswell, вы можете «настроить» ваш MySQL с помощью этого сценария: https://www.howtoforge.com/tuning-mysql-performance-with-mysqltuner

+0

. Я добавил индекс ('type', 'type_id'), и он решил проблему –

+0

Я рад, что смогу помочь! –