Ускоряют ли таблицы сопоставления SQL запросы? Как вы их используете?
Я хотел бы знать, какова цель таблицы сопоставления и как она ускоряет запросы MySQL. Я работаю над ускорением медленного MySQL-запроса, и я столкнулся с этим вопросом о стековом потоке. Комментарии предполагают, что таблицы сопоставления не только ускоряют запросы, объединяющие обе таблицы, но и являются правильным способом структурирования базы данных.
У меня есть очень похожая структура таблиц с отношением один ко многим. По мере роста таблицы время выполнения запроса продолжает расти до неприемлемых уровней. Так как я не смог найти много в Интернете, чтобы помочь решить мою проблему, я решил попробовать stackru, так как вы, ребята, никогда не подводили меня.
2 ответа
Я хотел бы знать, какова цель таблицы сопоставления
Таблица сопоставления используется для представления отношения "многие ко многим". Например, в приведенном вами вопросе есть две сущности - книги и студенты. Студент может одолжить много книг; книга может быть заимствована многими студентами.
Стандартный способ представить это в реляционной модели - это "таблица сопоставления", в которой будут содержаться внешние ключи для книг и студентов, а также любая информация, относящаяся, например, к дате начала и окончания кредита.
Таблица сопоставления действительно является "правильным" способом для моделирования множества отношений.
и как это ускоряет запросы MySQL
В большинстве случаев этого не происходит, хотя обычно он работает лучше, чем другие способы представления отношений "многие ко многим". Если производительность вас беспокоит, ответ @Namphibian на деньги в качестве отправной точки.
Первое, на что вам нужно ответить, - почему запрос выполняется так медленно. Если у вас есть следующий запрос
SELECT * FROM Customer WHERE CustomerID= 1
Это работает медленно. Итак, как вы определяете, почему он работает медленно? Введите следующее:
EXPLAIN ALL SELECT * FROM Customer WHERE CustomerID=1
Это вернет результирующий набор, указывающий, как MySQL получает данные. Здесь вы можете найти подсказки об отсутствующих индексах и т. Д., Которые могут помочь оптимизировать ваши запросы.
Смотрите следующие ссылки для получения дополнительных ответов:
http://dev.mysql.com/doc/refman/5.0/en/explain.html
Оптимизация индекса таблицы MySQL
Даже если вы использовали таблицу сопоставления, а ваши запросы и индексация не оптимальны, у вас будет ужасная производительность.