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

从SELECT语句创建新表时,如何向MySQL表添加索引?,mysql,indexing,Mysql,Indexing,我正在一个名为“production”的数据库中创建一个新表,方法是将来自另一个名为“crawler”的数据库中两个表的数据连接起来。我使用以下SQL查询创建此新表(此查询非常有效): 我还想将以下索引添加到此表中,但似乎不知道如何在同一个SQL查询中执行此操作 PRIMARY KEY (`id`), KEY `company_id` (`company_id`), KEY `title` (`title`), KEY `h1_tags` (`h1_tags`) 这可以在用于创建表的同一查询中

我正在一个名为“production”的数据库中创建一个新表,方法是将来自另一个名为“crawler”的数据库中两个表的数据连接起来。我使用以下SQL查询创建此新表(此查询非常有效):

我还想将以下索引添加到此表中,但似乎不知道如何在同一个SQL查询中执行此操作

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

这可以在用于创建表的同一查询中完成吗?如果没有,我以后如何在查询中添加这些索引?

您可以在同一条语句中执行此操作,它们只需在
选择之前执行即可:

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

您可以在同一语句中执行此操作,它们只需在
选择之前执行即可:

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
事后:事后: