Я думаю, что Вы ищете ОБЪЕДИНЕНИЕ пункт, а-ля
(SELECT * from us_music where `genre` = 'punk')
UNION
(SELECT * from de_music where `genre` = 'punk')
Это кажется, что Вы были бы happer с единственной таблицей. Пять наличия той же схемы и иногда необходимость быть представленными, как будто они произошли из одной таблицы, указывают на помещение всего этого в одной таблице.
Добавляют новый столбец, который может использоваться для различения эти пять языков (я предполагаю, что это - язык, который отличается среди таблиц, так как Вы сказали, что это было для локализации). Не волнуйтесь о наличии 4,5 миллионов записей. Любая реальная база данных может обработать тот размер без проблем. Добавьте корректные индексы, и Вы не испытаете никаких затруднений при контакте с ними как единственная таблица.
Любой из вышеупомянутых ответов действителен, или альтернативный путь состоит в том, чтобы развернуть имя таблицы для включения имени базы данных также - например:
SELECT * from us_music, de_music where `us_music.genre` = 'punk' AND `de_music.genre` = 'punk'
Столбец неоднозначен, потому что это появляется в обеих таблицах, которые необходимо было бы определить, где (или вид) поле полностью, такое как 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 .
Ваша исходная попытка охватить обе таблицы создает неявное СОЕДИНЕНИЕ. Это осуждено большинством опытных SQL-программистов, потому что это разделяет таблицы, которые будут объединены с условием как.
Эти UNION
хорошее решение для таблиц, как они, но не должно быть никакой причины, они не могут быть помещены в одну таблицу с достойной индексацией. Я видел добавление корректного индекса к большой скорости запроса увеличения таблицы тремя порядками величины.
Оператор union
вызывает время сделки с огромными данными. Рекомендуется выполнять выбор в 2 этапа: