У нас есть пара таблиц, большинство наших запросов используют только несколько объединений, так, другими словами, у нас есть что-то вроде 2-3 объединений, которые почти каждый запрос использует. Каковы наиболее распространенные способы ускорения этого общего объединения, если таблицы становятся все больше? Мы хотели бы использовать SQL Server или Oracle.Общие соединения нескольких таблиц
ответ
Наиболее распространенным методом является индексирование, но вы не предоставляете достаточно информации, чтобы быть более конкретным.
Вот несколько сценариев:
(1) У вас есть куча справочных таблиц, связанных с центральным столом, такие как таблицы фактов.
В этом случае вы хотите определить первичный ключ автоинкремента в справочных таблицах. Это автоматически функционирует как индекс.
(2) Ваши запросы высоко селективный
В этом случае, вы хотите, чтобы сосредоточиться индексом на полях в ИНЕКЕ. Это особенно верно, когда вторая таблица довольно мала, поэтому последовательный поиск похож на поиск индекса.
(3) Ваши соединенные таблицы действительно являются узким местом
В этом случае, вы можете создать экземпляр результат объединения, либо в виде таблицы или реализованным зрения. Это может потребоваться, если ваш критерий объединения является сложным, например, используя диапазон данных в критерии объединения.
(4) У вас есть и другие варианты, такие как разбиение данных.
Некоторые опции
- Lay индексы на тэ колонке вы присоединитесь на
- сделать индексы, чтобы они покрывают данные вы после
- Denonormalise данных делать стыки не нужны < = наибольшая победа
- использовать индексированные представления в SQL Server или материализованные представления в Oracle
- Убедитесь, что вы предоставили запрос Оптимизатор - лучшая статистика, которую он может получить, поэтому использует оптимальную стратегию объединения (хеш/слияние/цикл)
материализованные виды - oracle поддерживает их, и они полезны в некоторых случаях, особенно. когда есть много сообщений, а не записи: http://docs.oracle.com/cd/B10501_01/server.920/a96520/mv.htm
указание - проанализировать/объяснить планы запросов и посмотреть, поможет ли добавление индекса. Очень часто вы можете улучшить скорость, имея разные индикаторы для разных запросов. Вы также можете дать подсказки, чтобы сообщить парсеру запроса, который индекс используется для конкретного запроса.
denormalization - хранить некоторые данные из этих таблиц в связанных таблицах, а не присоединяться для их получения.
кеширование - увеличение размера кеша запросов или создание слоя кеширования в приложении.
- 1. Внутренние соединения нескольких таблиц
- 2. Собственные соединения для нескольких таблиц/левого соединения +
- 3. Общие столбцы для нескольких таблиц в CakePHP
- 4. Удаление нескольких таблиц с помощью соединения
- 5. Как выполнить запрос соединения для нескольких таблиц?
- 6. Rails ActiveRecord запрос для соединения нескольких таблиц
- 7. соединения нескольких таблиц с фильтром по дате
- 8. Реляционная алгебра для соединения нескольких таблиц
- 9. Как улучшить ВЫБЕРИТЕ производительность соединения нескольких таблиц
- 10. соединения таблиц, где
- 11. Отдельная сумма соединения таблиц
- 12. MySQL соединения таблиц выберите
- 13. Mysql кросс соединения таблиц
- 14. Условные соединения таблиц
- 15. Mapping соединения таблиц запроса
- 16. Множественные соединения таблиц
- 17. Множественные соединения таблиц запроса
- 18. has_and_belongs_to_many и соединения таблиц
- 19. Зачем использовать общие выражения таблиц?
- 20. общий список и условные отсчеты во время соединения нескольких таблиц
- 21. Как написать запрос соединения для нескольких таблиц в CakePHP?
- 22. Linq для полного внешнего соединения нескольких таблиц в Dataset
- 23. Выбор данных из нескольких таблиц и использование левого соединения?
- 24. SQLAlchemy: Получение одного объекта из соединения нескольких таблиц
- 25. Удалить из внутреннего соединения MySQL запросов - две таблиц нескольких условий
- 26. Подсчет связанных строк из нескольких таблиц с использованием левого соединения
- 27. Использование соединения для удаления записи из нескольких таблиц
- 28. Внутренние соединения и группирование нескольких таблиц в одну строку
- 29. Получение данных из нескольких таблиц, которые не имеют прямого соединения
- 30. SQL - выбрать строки во время соединения нескольких таблиц
Подумайте о индексации. –
Подождите, у вас есть несколько запросов в SQL Server или Oracle, которые медленны? –
@ Аарон Да, они не так быстро, почему? – Cartesius00