как использовать соединение с Sqlite Index - PullRequest
0 голосов
/ 24 сентября 2019

Я создаю приложение с ionic 3. В приложение я добавил поисковый фильтр, который фильтрует пользователей по их роли.У меня есть 5 таблиц, из которых я должен извлечь данные. Для этого я выполнил следующие шаги.

создал индекс каждой таблицы с необходимыми данными.

CREATE INDEX IF NOT EXISTS AccountIndexTable ON Accounts(id,roleId,firstName,lastName,email,accountId);
CREATE INDEX IF NOT EXISTS AddressIndexTable ON Addresses(id,addressTypeId,street,city,state,country,pincode,accountId)
CREATE INDEX IF NOT EXISTS CompanyIndexTable ON Companies(id,name,accountId)
CREATE INDEX IF NOT EXISTS CommunicationIndexTable ON Communications(id,phone,accountId)
CREATE INDEX IF NOT EXISTS OptionalInfoIndexTable ON CustomerOptionalInfos(id,customerType,accountId)

иЗатем я использовал соединение, чтобы получить данные.Перед этим у меня есть вопросы

1: нужно ли использовать индексированную таблицу в моем соединении?

запрос на соединение:

SELECT Accounts.accountId AS accountID,
   Accounts.roleId AS roleID,
   Accounts.email AS email,
   Accounts.firstName || " " || Accounts.lastName AS name,
   Addresses.street AS street,
   Addresses.city AS city,
   Addresses.state AS state,
   Addresses.country AS country,
   Addresses.pincode AS pincode,
   Communications.phone AS phone,
   Companies.name AS compName,
   CustomerOptionalInfos.customerType AS cType
FROM Accounts
LEFT JOIN Addresses ON Addresses.accountId=Accounts.accountId
AND Addresses.addressTypeId=1
LEFT JOIN Communications ON Communications.accountId=Accounts.accountId
LEFT JOIN Companies ON Companies.accountId=Accounts.accountId
LEFT JOIN CustomerOptionalInfos ON CustomerOptionalInfos.accountId=Accounts.accountId
WHERE 1=1
  AND Accounts.isDelete!='true'
  AND Accounts.firstName!= ''
  AND Accounts.roleId = 5
ORDER BY Accounts.firstName ASC
LIMIT ?,?

Это по-прежнему занимает +2 секундывыполнить.Пожалуйста, предложите мне лучший способ сделать это.У меня есть большое количество данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...