2011-12-28 71 views
1

我在一个名为'production'的数据库中创建一个新表,通过连接另一个名为'crawler'的数据库中的两个表中的数据。我创建这个新表与下面的SQL查询(此查询工作完美):从SELECT语句创建新表时,如何将索引添加到MySQL表中?

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

算账:['ALTER TABLE'(http://dev.mysql.com/doc/refman /5.1/en/alter-table.html) – 2011-12-28 18:54:39

回答

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 
相关问题