mirror of
https://github.com/samsonjs/immich.git
synced 2026-03-25 09:15:56 +00:00
chore: add indexes for foreign keys (#25925)
* chore: add indexes for foreign keys * update idx_asset_face_person_id index --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
parent
ec4de54ea2
commit
78c8f1d5a9
22 changed files with 33 additions and 1 deletions
BIN
mobile/drift_schemas/main/drift_schema_v19.json
generated
Normal file
BIN
mobile/drift_schemas/main/drift_schema_v19.json
generated
Normal file
Binary file not shown.
|
|
@ -3,6 +3,8 @@ import 'package:immich_mobile/infrastructure/entities/person.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_asset_face_person_id ON asset_face_entity (person_id)')
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_asset_face_asset_id ON asset_face_entity (asset_id)')
|
||||||
class AssetFaceEntity extends Table with DriftDefaultsMixin {
|
class AssetFaceEntity extends Table with DriftDefaultsMixin {
|
||||||
const AssetFaceEntity();
|
const AssetFaceEntity();
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,6 +3,9 @@ import 'package:immich_mobile/infrastructure/entities/local_album.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/entities/local_asset.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/local_asset.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql(
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_local_album_asset_album_asset ON local_album_asset_entity (album_id, asset_id)',
|
||||||
|
)
|
||||||
class LocalAlbumAssetEntity extends Table with DriftDefaultsMixin {
|
class LocalAlbumAssetEntity extends Table with DriftDefaultsMixin {
|
||||||
const LocalAlbumAssetEntity();
|
const LocalAlbumAssetEntity();
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -2,6 +2,7 @@ import 'package:drift/drift.dart';
|
||||||
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_partner_shared_with_id ON partner_entity (shared_with_id)')
|
||||||
class PartnerEntity extends Table with DriftDefaultsMixin {
|
class PartnerEntity extends Table with DriftDefaultsMixin {
|
||||||
const PartnerEntity();
|
const PartnerEntity();
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -2,6 +2,7 @@ import 'package:drift/drift.dart';
|
||||||
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_person_owner_id ON person_entity (owner_id)')
|
||||||
class PersonEntity extends Table with DriftDefaultsMixin {
|
class PersonEntity extends Table with DriftDefaultsMixin {
|
||||||
const PersonEntity();
|
const PersonEntity();
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -4,6 +4,7 @@ import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_remote_album_owner_id ON remote_album_entity (owner_id)')
|
||||||
class RemoteAlbumEntity extends Table with DriftDefaultsMixin {
|
class RemoteAlbumEntity extends Table with DriftDefaultsMixin {
|
||||||
const RemoteAlbumEntity();
|
const RemoteAlbumEntity();
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,6 +3,9 @@ import 'package:immich_mobile/infrastructure/entities/remote_album.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql(
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_album_asset_album_asset ON remote_album_asset_entity (album_id, asset_id)',
|
||||||
|
)
|
||||||
class RemoteAlbumAssetEntity extends Table with DriftDefaultsMixin {
|
class RemoteAlbumAssetEntity extends Table with DriftDefaultsMixin {
|
||||||
const RemoteAlbumAssetEntity();
|
const RemoteAlbumAssetEntity();
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -19,6 +19,13 @@ ON remote_asset_entity (owner_id, library_id, checksum)
|
||||||
WHERE (library_id IS NOT NULL);
|
WHERE (library_id IS NOT NULL);
|
||||||
''')
|
''')
|
||||||
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_remote_asset_checksum ON remote_asset_entity (checksum)')
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_remote_asset_checksum ON remote_asset_entity (checksum)')
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_remote_asset_stack_id ON remote_asset_entity (stack_id)')
|
||||||
|
@TableIndex.sql(
|
||||||
|
"CREATE INDEX IF NOT EXISTS idx_remote_asset_local_date_time_day ON remote_asset_entity (STRFTIME('%Y-%m-%d', local_date_time))",
|
||||||
|
)
|
||||||
|
@TableIndex.sql(
|
||||||
|
"CREATE INDEX IF NOT EXISTS idx_remote_asset_local_date_time_month ON remote_asset_entity (STRFTIME('%Y-%m', local_date_time))",
|
||||||
|
)
|
||||||
class RemoteAssetEntity extends Table with DriftDefaultsMixin, AssetEntityMixin {
|
class RemoteAssetEntity extends Table with DriftDefaultsMixin, AssetEntityMixin {
|
||||||
const RemoteAssetEntity();
|
const RemoteAssetEntity();
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -2,6 +2,7 @@ import 'package:drift/drift.dart';
|
||||||
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_stack_primary_asset_id ON stack_entity (primary_asset_id)')
|
||||||
class StackEntity extends Table with DriftDefaultsMixin {
|
class StackEntity extends Table with DriftDefaultsMixin {
|
||||||
const StackEntity();
|
const StackEntity();
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -97,7 +97,7 @@ class Drift extends $Drift implements IDatabaseRepository {
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get schemaVersion => 18;
|
int get schemaVersion => 19;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
MigrationStrategy get migration => MigrationStrategy(
|
MigrationStrategy get migration => MigrationStrategy(
|
||||||
|
|
@ -213,6 +213,19 @@ class Drift extends $Drift implements IDatabaseRepository {
|
||||||
from17To18: (m, v18) async {
|
from17To18: (m, v18) async {
|
||||||
await m.createIndex(v18.idxRemoteAssetCloudId);
|
await m.createIndex(v18.idxRemoteAssetCloudId);
|
||||||
},
|
},
|
||||||
|
from18To19: (m, v19) async {
|
||||||
|
await m.createIndex(v19.idxAssetFacePersonId);
|
||||||
|
await m.createIndex(v19.idxAssetFaceAssetId);
|
||||||
|
await m.createIndex(v19.idxLocalAlbumAssetAlbumAsset);
|
||||||
|
await m.createIndex(v19.idxPartnerSharedWithId);
|
||||||
|
await m.createIndex(v19.idxPersonOwnerId);
|
||||||
|
await m.createIndex(v19.idxRemoteAlbumOwnerId);
|
||||||
|
await m.createIndex(v19.idxRemoteAlbumAssetAlbumAsset);
|
||||||
|
await m.createIndex(v19.idxRemoteAssetStackId);
|
||||||
|
await m.createIndex(v19.idxRemoteAssetLocalDateTimeDay);
|
||||||
|
await m.createIndex(v19.idxRemoteAssetLocalDateTimeMonth);
|
||||||
|
await m.createIndex(v19.idxStackPrimaryAssetId);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
BIN
mobile/test/drift/main/generated/schema.dart
generated
BIN
mobile/test/drift/main/generated/schema.dart
generated
Binary file not shown.
BIN
mobile/test/drift/main/generated/schema_v19.dart
generated
Normal file
BIN
mobile/test/drift/main/generated/schema_v19.dart
generated
Normal file
Binary file not shown.
Loading…
Reference in a new issue