尝试在SQLite中将匹配列从一个表复制到另一个表?

时间:2017-09-19 14:54:16

标签: sqlite

我有两个名为'Images'和'ImagesMSCV'的表。这两个表都包含两列'MicrosoftId'和'ImageId'。现在表格看起来像......

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

所以我试图将'ImagesIC'列从'ImagesMSCV'复制到'Images'中的同一列。为此,我编写了以下SQLite语句......

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

...但是当我运行此语句时,我的数据库崩溃了。我不知道它有什么问题?

编辑:显然数据库只是停止响应,因为UPDATE花了这么长时间。知道如何提高性能吗?

1 个答案:

答案 0 :(得分:0)

对于ImagesMSCV表中的每一行,数据库必须在CREATE INDEX xxx ON ImagesMSCV(ImageId); 表中查找相应的行。每次这样的查找都需要全表扫描,除非该列上有索引:

only length-1 arrays can be converted to Python scalars