データの一部だけ違う、重複データを統合するための効率のよい方法を探しています。
データが以下であった時
id | name | category | data |
---|---|---|---|
------ | --------- | ------------ | --------- |
1 | aaa | hoge | d01 |
2 | aaa | fuga | d02 |
3 | bbb | hoge | d03 |
4 | bbb | fuga | d04 |
5 | ccc | hoge | d05 |
6 | ccc | fuga | d06 |
7 | ddd | fuga | d07 |
8 | eee | hoge | d08 |
9 | fff | fuga | d09 |
------ | --------- | ------------ | --------- |
name で統合し、category カラムを追加して、そこに data を入れたいと考えています。
id | name | hoge | fuga |
---|---|---|---|
------ | --------- | --------- | --------- |
1 | aaa | d01 | d02 |
3 | bbb | d03 | d04 |
5 | ccc | d05 | d06 |
7 | ddd | NULL | d07 |
8 | eee | d08 | NULL |
9 | fff | NULL | d09 |
------ | --------- | --------- | --------- |
idは任意のものであれば良いので、振り直しでも新規追加でもなんでも良いです。
現在、id1 から順に name で検索し、同じものを探してcategory と data を読み、新テーブルに記述しているのですが、行数が数十万行あり、時間がかかるので改善したいと考えています。
select * from XXX where id = $i
で抽出したもの
$data1
とし、新テーブル YYY に$data1['name']
がなければ、
select category,data from XXX where name = $data1['name']
で、旧テーブル XXX から
$data2
として再抽出。
$data1
に$data2['category']
$data2['data']
の組を追加して、新テーブル YYY へ insert
これを行数分実施
name に関して重複はありますが、name + category の組み合わせで重複はありません。
サンプル data は id と紐付いて見えますが、実際の data は全く独立しています。
良い方法を教えていただけると幸いです。
よろしくお願いします。
環境
PHP
mysql
回答3件
あなたの回答
tips
プレビュー