Как добавить индексы в таблицу MySQL при создании новой таблицы из оператора SELECT? - PullRequest
1 голос
/ 28 декабря 2011

Я создаю новую таблицу в базе данных с именем «production», объединяя данные из двух таблиц в другую базу данных «crawler».Я создаю эту новую таблицу со следующим запросом SQL (этот запрос работает отлично):

CREATE TABLE files_and_metas_joined
SELECT
    crawler.files.id,
    crawler.files.company_id,
    crawler.file_metas.title,
    crawler.file_metas.h1_tags
FROM
    crawler.files,
    crawler.file_metas
WHERE
    crawler.files.id = crawler.file_metas.file_id
    AND
    crawler.files.processed = 1
    AND
    crawler.files.junk = 0

Я хотел бы также добавить следующие индексы в эту таблицу, но не могу понять, как это сделатьэто в том же запросе SQL.

PRIMARY KEY (`id`),
KEY `company_id` (`company_id`),
KEY `title` (`title`),
KEY `h1_tags` (`h1_tags`)

Может ли это быть сделано в том же запросе, который использовался для создания таблицы?Если нет, то как мне добавить эти индексы с запросом впоследствии?

1 Ответ

4 голосов
/ 28 декабря 2011

Вы можете сделать это в том же выражении, они просто должны идти до SELECT:

CREATE TABLE files_and_metas_joined
(
  PRIMARY KEY (`id`),
  KEY `company_id` (`company_id`),
  KEY `title` (`title`),
  KEY `h1_tags` (`h1_tags`)
)
SELECT
    crawler.files.id,
    crawler.files.company_id,
    crawler.file_metas.title,
    crawler.file_metas.h1_tags
FROM
    crawler.files,
    crawler.file_metas
WHERE
    crawler.files.id = crawler.file_metas.file_id
    AND
    crawler.files.processed = 1
    AND
    crawler.files.junk = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...