Hi,

I have a phone book (bm_ppal), 726.000 rows, 10 columns

This phone book have this columns
Name Declared Type Type Size
nbmId INTEGER INTEGER
nbmCodigo VARCHAR (6) VARCHAR 6
abmNombre VARCHAR (320) VARCHAR 320
abmNombrePlano VARCHAR (320) VARCHAR 320
nbmCiudad INTEGER INTEGER
nbmTelefono VARCHAR (9) VARCHAR 9
nbmCalle INTEGER INTEGER
nbmNroPuerta VARCHAR (5) VARCHAR
nbmLongitud VARCHAR (5) VARCHAR
nbmLatitud VARCHAR (5) VARCHAR

I use c# winform datagridview virtualmode

The file.sqlite is in: https://1drv.ms/u/s!Ar9mkZ1CPa2WhkUSJLxLI0WKV_TP

I have this sqlite sentence for read the file, very fast: 157 ms

SELECT bm_ppal.nbmId, bm_ppal.nbmCodigo, bm_ppal.abmNombre,
bm_ppal.nbmCiudad, ciudad.a47Nombre, ciudad.n47Depart, depto.a46Nombre,

bm_ppal.nbmTelefono, bm_ppal.nbmCalle, bm_calles.abmNombre,
bm_ppal.nbmNroPuerta, bm_ppal.nbmLongitud, bm_ppal.nbmLatitud
 FROM bm_ppal
 LEFT JOIN ciudad ON ciudad.n47Id = bm_ppal.nbmCiudad
 LEFT JOIN bm_calles ON bm_calles.nbmId = bm_ppal.nbmCalle
 LEFT JOIN depto ON depto.n46Id = ciudad.n47Depart
 ORDER BY bm_ppal.nbmId
 LIMIT 512
 OFFSET 0
157ms

I have this sqlite sentence for read the file, change the ORDER BY, very
fast: 135ms

SELECT bm_ppal.nbmId, bm_ppal.nbmCodigo, bm_ppal.abmNombre,
bm_ppal.nbmCiudad, ciudad.a47Nombre, ciudad.n47Depart, depto.a46Nombre,

bm_ppal.nbmTelefono, bm_ppal.nbmCalle, bm_calles.abmNombre,
bm_ppal.nbmNroPuerta, bm_ppal.nbmLongitud, bm_ppal.nbmLatitud
 FROM bm_ppal
 LEFT JOIN ciudad ON ciudad.n47Id = bm_ppal.nbmCiudad
 LEFT JOIN bm_calles ON bm_calles.nbmId = bm_ppal.nbmCalle
 LEFT JOIN depto ON depto.n46Id = ciudad.n47Depart
 ORDER BY bm_ppal.abmNombre, bm_ppal.nbmId
 LIMIT 512
 OFFSET 0
135ms

but when I change the ORDER BY with an attributt of other table is very
slowly: 5699 ms

SELECT bm_ppal.nbmId, bm_ppal.nbmCodigo, bm_ppal.abmNombre,
bm_ppal.nbmCiudad, ciudad.a47Nombre, ciudad.n47Depart, depto.a46Nombre,

bm_ppal.nbmTelefono, bm_ppal.nbmCalle, bm_calles.abmNombre,
bm_ppal.nbmNroPuerta, bm_ppal.nbmLongitud, bm_ppal.nbmLatitud
 FROM bm_ppal
 LEFT JOIN ciudad ON ciudad.n47Id = bm_ppal.nbmCiudad
 LEFT JOIN bm_calles ON bm_calles.nbmId = bm_ppal.nbmCalle
 LEFT JOIN depto ON depto.n46Id = ciudad.n47Depart
 ORDER BY bm_calles.abmNombre
 LIMIT 512
 OFFSET 0
5699ms ??

I create the index with:

CREATE INDEX IF NOT EXISTS idxbm_calles2 ON bm_calles(abmNombre);

where I create an index in the table bm_ppal for bm_calles(abmNombre) with
the LEFT JOIN bm_calles ON bm_calles.nbmId = bm_ppal.nbmCalle

How I can optimize it ?
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to