从SELECT语句创建新表时,如何将索引添加到MySQL表?

时间:2011-12-28 18:52:23

标签: mysql indexing

我正在一个名为'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 个答案:

答案 0 :(得分:4)

您可以在同一声明中执行此操作,只需在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