2011-12-28 8 views
1

私は、 'crawler'と呼ばれる別のデータベースの2つのテーブルのデータを結合することによって、 'production'というデータベースに新しいテーブルを作成しています。私も、この表に次のインデックスを追加したいのですが、中にそれを行う方法を見つけ出すように見えることはできません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クエリ(このクエリが完璧に動作します)で、この新しいテーブルを作成します同じ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) –

答えて

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 
関連する問題