MySQL - Выбор данных из нескольких таблиц все с той же структурой кроме различных данных

78
задан OMG Ponies 6 February 2011 в 06:54
поделиться

6 ответов

Я думаю, что Вы ищете ОБЪЕДИНЕНИЕ пункт, а-ля

(SELECT * from us_music where `genre` = 'punk')
UNION
(SELECT * from de_music where `genre` = 'punk')
175
ответ дан Mihai Limbășan 24 November 2019 в 10:27
поделиться

Это кажется, что Вы были бы happer с единственной таблицей. Пять наличия той же схемы и иногда необходимость быть представленными, как будто они произошли из одной таблицы, указывают на помещение всего этого в одной таблице.

Добавляют новый столбец, который может использоваться для различения эти пять языков (я предполагаю, что это - язык, который отличается среди таблиц, так как Вы сказали, что это было для локализации). Не волнуйтесь о наличии 4,5 миллионов записей. Любая реальная база данных может обработать тот размер без проблем. Добавьте корректные индексы, и Вы не испытаете никаких затруднений при контакте с ними как единственная таблица.

19
ответ дан Ned Batchelder 24 November 2019 в 10:27
поделиться

Любой из вышеупомянутых ответов действителен, или альтернативный путь состоит в том, чтобы развернуть имя таблицы для включения имени базы данных также - например:

SELECT * from us_music, de_music where `us_music.genre` = 'punk' AND `de_music.genre` = 'punk'
5
ответ дан Moo 24 November 2019 в 10:27
поделиться

Столбец неоднозначен, потому что это появляется в обеих таблицах, которые необходимо было бы определить, где (или вид) поле полностью, такое как us_music.genre или de_music.genre, но Вы обычно определяли бы две таблицы, если бы Вы тогда собирались присоединиться к ним вместе некоторым способом. Структура, как которая Ваш контакт с иногда упоминается как разделенная таблица, хотя это обычно делается, чтобы разделить набор данных на отличные файлы также, а не просто разделить набор данных произвольно. Если бы Вы отвечаете за структуру базы данных и нет никакого серьезного основания разделить данные тогда, я создал бы одну большую таблицу с дополнительным полем "источника", которое содержит код страны, но Вы, вероятно, делаете его по законной причине производительности. Или используйте объединение для присоединения к таблицам, Вы интересуетесь http://dev.mysql.com/doc/refman/5.0/en/union.html или при помощи механизма базы данных Слияния http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html .

4
ответ дан 24 November 2019 в 10:27
поделиться

Ваша исходная попытка охватить обе таблицы создает неявное СОЕДИНЕНИЕ. Это осуждено большинством опытных SQL-программистов, потому что это разделяет таблицы, которые будут объединены с условием как.

Эти UNION хорошее решение для таблиц, как они, но не должно быть никакой причины, они не могут быть помещены в одну таблицу с достойной индексацией. Я видел добавление корректного индекса к большой скорости запроса увеличения таблицы тремя порядками величины.

3
ответ дан staticsan 24 November 2019 в 10:27
поделиться

Оператор union вызывает время сделки с огромными данными. Рекомендуется выполнять выбор в 2 этапа:

  1. выберите идентификатор
  2. , затем выберите основную таблицу с ним
3
ответ дан 24 November 2019 в 10:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: