私のMySQLデータベースの簡略化されたバージョンは次のようになります:
Table books (ENGINE=MyISAM)
id <- KEY
publisher <- LONGTEXT
publisher_id <- INT <- This is a new field that is currently null for all records
Table publishers (ENGINE=MyISAM)
id <- KEY
name <- LONGTEXT
現在、books.publisher は繰り返される値を保持していますが、publishers.name は一意に保持されています。books.publisher を取り除き、代わりに books.publisher_id フィールドに値を入力したいと考えています。
私がやりたいことを説明する簡単な SQL コードは次のとおりです。
UPDATE books
JOIN publishers ON books.publisher = publishers.name
SET books.publisher_id = publishers.id;
問題は、私が大量のレコードを持っているということです。
事前にこのようなものを使用するよりも速い解決策はありますか?:
CREATE INDEX publisher ON books (publisher(20));