2017-09-19 5 views
0

私は 'Images'と 'ImagesMSCV'という2つのテーブルを持っています。これらのテーブルには、両方とも 'MicrosoftId'と 'ImageId'の2つの列があります。今のテーブルがどのように見える...SQLiteのあるテーブルから別のテーブルに一致する列をコピーしようとしていますか?

 Images       ImagesMSCV 
MicrosoftId | ImageId    MicrosoftId | ImageId 
    null   234      467  234 
    null   172      512  172 
    null   376      327  376 
    etc   etc      etc  etc 

は、だから私は、「イメージ」で同じ列に「ImagesMSCV」から「MicrosoftId」列をコピーしようとしています。私はこの文を実行するときにこれを行うために、私は...

UPDATE Images 
    SET MicrosoftId = 
    (SELECT MicrosoftId FROM ImagesMSCV 
    WHERE ImagesMSCV.ImageId = Images.ImageId); 

を次のSQLiteの文を書いた...しかし、私のデータベースだけでクラッシュします。私は何が間違っているのか分からないのですか?

編集:明らかに、UPDATEが長時間かかるため、データベースが応答を停止するだけです。どのようにパフォーマンスを向上させるのか?

+0

'UPDATE画像 SET MicrosoftId = IMAGEID(ImagesMSCV ImagesMSCV.ImageId = Images.ImageId FROM MicrosoftId選択) = 234 'それは完了するはずです。はいの場合、クエリは正しいです。 – lad2025

答えて

0

Imagesテーブルの各行について、データベースはImagesMSCVテーブル内の対応する行をルックアップする必要があります。各そのような参照は、その列にインデックスがある場合を除き、フルテーブルスキャンを必要とする:

CREATE INDEX xxx ON ImagesMSCV(ImageId); 
+0

コメントを残さずに答えを下落させた理由を聞いてもよろしいですか?質問は最初は少し不明で、私の答えは可能なステップを示しています。 – lad2025

関連する問題