#mysql #sql #database #join #left-join
#mysql #sql #База данных #Присоединиться #левое соединение
Вопрос:
ОБЪЕДИНЕНИЕ — удобная функция баз данных SQL, но как насчет больших баз данных (> 10 ГБ). Рассмотрим три таблицы (с двумя столбцами) отношений «многие ко многим», поскольку мы хотим получить элементы, связанные с одним отдельным случаем (например, теги ОДНОЙ статьи).
ФАКТЫ (поправьте меня, если я ошибаюсь): 1. Для ОБЪЕДИНЕНИЯ в памяти должны помещаться три таблицы. 2. Одиночный ВЫБОР по ПЕРВИЧНОМУ КЛЮЧУ не потребляет память. 3. Когда у нас есть много одновременных подключений для чтения, избыточное соединение будет храниться в очереди (без выполнения неудачного запроса или перегрузки).
Тогда, не лучше ли выполнить три простых запроса SELECT. Это делает систему немного медленнее, но я считаю, что более эффективно работать со всеми таблицами размером в гигабайт.
Можно предположить, что добавление большего количества является окончательным решением; но я думаю, что все еще обрабатывать такие большие таблицы непросто с избытком оперативной памяти.
Ограничение действий простыми запросами SELECT с ПЕРВИЧНЫМ КЛЮЧОМ может быть практическим подходом для эффективной работы с большими базами данных.
Ответ №1:
Если вы утверждаете, что лучше выполнять выборки в трех отдельных таблицах, а затем самостоятельно объединять данные вне ядра базы данных, то вы ошибаетесь. База данных справится с объединением ваших запросов лучше, чем вы можете. Не все таблицы должны помещаться в оперативную память, чтобы соединение работало.
Комментарии:
1. Но избегайте ORDER BY, если вас беспокоит оперативная память.
Ответ №2:
Индексы могут быть действительно полезны с большими базами данных.
Это может помочь http://www.databasejournal.com/features/mysql/article.php/1382791/Optimizing-MySQL-Queries-and-Indexes.htm
http://www.tizag.com/mysqlTutorial/mysql-index.php
Индексы могут различаться в зависимости от реализации базы данных, и у них также есть недостатки, если они не спроектированы / реализованы правильно (вот почему вы не просто индексируете каждое поле).
Комментарии:
1. ПЕРВИЧНЫЙ КЛЮЧ автоматически индексируется, и у нас есть таблица с двумя столбцами, поскольку нам не нужен индекс другого столбца. Более того, индексирование всего делает запись очень медленной в больших базах данных.