SQLite 查询需要很长时间 - Angular Ionic

SQLite queries taking a long time - Angular Ionic

我有一个 ionic angular 应用程序,我使用 SQLite 作为本地数据库。

我有以下查询:

const statement = '  SELECT fl.*, ai.*, fl.uuid as fluuid ' +
  '(SELECT aName FROM world WHERE world.uuid = fl.daUUID) as depName, ' +
  '(SELECT country FROM world WHERE world.uuid = fl.daUUID) as depCountry, ' +
  '  FROM fl, ai WHERE fl.userUUID= ? AND ai.uuid=fl.aiUUID  ORDER BY Date ASC';

我有以下用于启动应用程序的创建语句:

table fl


           `create TABLE IF NOT EXISTS  fl
    (
        ID                   int                                 primary key,
        daUUID               text                                null,
        aaUUID               text                                null,
        aiUUID               text                                null,
        uuid                 text                                null,
        userUUID             text                                null,
        updateTimeStamp      DATETIME not null DEFAULT CURRENT_TIMESTAMP
    );
    create index IF NOT EXISTS ix1Fl1
        on fl (userUUID, aiUUID, uuid);
    create index IF NOT EXISTS ix1Fl2
        on fl (daUUID, aaUUID);
        `

table ai


           `create TABLE IF NOT EXISTS  ai
    (
        aiID                  int                                 primary key,
        uuid                  TEXT                                null,
        userUUID              TEXT                                null,
        updateTimeStamp       DATETIME not null DEFAULT CURRENT_TIMESTAMP
    
    );
    create index IF NOT EXISTS ix1Ai1 on ai (uuid, userUUID);
          );`

table世界


    `
    create table IF NOT EXISTS world
    (
        aiID            int                                 primary key,
        uuid            text                                null,
        userUUID        text                                null,
        updateTimeStamp timestamp default CURRENT_TIMESTAMP
    );create index IF NOT EXISTS ix1world1
        on world (uuid, userUUID);`

正如所见,我已经添加了索引但是(就像我的实时数据库一样)但是查询运行缓慢,

但是如果我从查询中删除它

  '(SELECT aName FROM world WHERE world.uuid = fl.daUUID) as depName, ' +
  '(SELECT country FROM world WHERE world.uuid = fl.daUUID) as depCountry, ' +

查询再次快速运行。

想知道解决这个问题的方法是什么? (同样的概念非常适用于我的实时数据库)

(注意:我已经删减了 create 语句,因为它们对 post 来说太长了)

谢谢

您可以用一个连接替换两个相关的子查询:

SELECT fl.*, ai.*, fl.uuid as fluuid,
world.aName AS depName,
world.country as depCountry
FROM fl, ai
JOIN world ON world.uuid = fl.daUUID
WHERE fl.userUUID= ? AND ai.uuid = fl.aiUUID
ORDER BY Date ASC

甚至:

SELECT fl.*, ai.*, fl.uuid as fluuid,
world.aName AS depName,
world.country as depCountry
FROM fl
JOIN ai ON ai.uuid = fl.aiUUID
JOIN world on world.uuid = fl.daUUID
WHERE fl.userUUID = ?
ORDER BY Date ASC