Slow query from blob in NONE but not in UTF8
--------------------------------------------
Key: CORE-5729
URL: http://tracker.firebirdsql.org/browse/CORE-5729
Project: Firebird Core
Issue Type: Bug
Components: Engine
Affects Versions: 2.5.8, 3.0.2
Environment: WINDOWS 10 32 bits, WINDOWS 10 64 bits.
Reporter: Fabrice V
Attachments: Sample database.7z
Slow query from blob SUB_TYPE 1 with charset NONE but not in charset UTF8 !
CREATE TABLE CUSTOMER
(
C_ID VARCHAR(20) NOT NULL,
C_FIRSTNAME VARCHAR(50),
C_LASTNAME VARCHAR(50),
PRIMARY KEY (C_ID)
);
/* This table is used by end user to add custom fields */
CREATE TABLE USERFIELD
(
U_ID VARCHAR(20) NOT NULL,
U_VALUE BLOB SUB_TYPE 1,
U_CUSTOMERCODE VARCHAR(20),
PRIMARY KEY (U_ID)
);
CREATE TABLE INVOICE
(
I_ID VARCHAR(20) NOT NULL,
I_NUMBER VARCHAR(50),
I_AMOUNT FLOAT,
PRIMARY KEY (I_ID)
);
Query :
select first C_FIRSTNAME,
(select I_NUMBER from INVOICE where I_ID =(select first 1 QUF.LV_VALEUR
from USERFIELD QUF where QUF.U_CUSTOMERCODE=q1.C_ID )) as U_USERFIELD1
from CUSTOMER Q1
With 1 record in INVOICE/CUSTOMER and 200 000 records in table USERFIELD
Result with UTF8 database :
=======================
Statement executed (elapsed time: 0.000s).
21 fetches, 0 marks, 0 reads, 0 writes.
0 inserts, 0 updates, 0 deletes, 0 index, 4 seq.
Delta memory: 0 bytes.
Total execution time: 0.031s
Script execution finished.
Result with NONE database :
=======================
Statement executed (elapsed time: 0.000s).
334240 fetches, 0 marks, 4009 reads, 0 writes.
0 inserts, 0 updates, 0 deletes, 0 index, 234825 seq.
Delta memory: 0 bytes.
Total execution time: 0.375s
Script execution finished.
Both result on same computer with local databases.
So why NONE is 10 time slower than UTF8 ?
In NONE have some very slow responsive time with some records in USERFIELD, to
fix is I have added cast( varchar(20)) like this :
select first C_FIRSTNAME,
(select I_NUMBER from INVOICE where I_ID =(select first 1 cast(SUBSTRING(
QUF.LV_VALEUR from 1 for 20) as varchar(20))
from USERFIELD QUF where QUF.U_CUSTOMERCODE=q1.C_ID )) as U_USERFIELD1
from CUSTOMER Q1
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel