I am using Firebird for past few months and today a customer complained about performance issue.
I checked into client's database and they had 167,77,216 rows in one table. So I made a clone of that table into another empty database and loaded with dummy records and tested with a simple query
select count(journal_id) from acc_journal
It took 14.28 seconds.
After that I made a SQLite database and loaded with this data and it took 2.216 seconds.
Is this Firebid's nature or I am missing something?
Firebird table structure:
CREATE TABLE ACC_JOURNAL (
JOURNAL_ID INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL,
ACCOUNT_HEAD_ID INTEGER,
REF_ID INTEGER,
REF_TYPE VARCHAR(20),
DESCRIPTION VARCHAR(512),
DEBIT DECIMAL(18,4),
DEBIT_EX DECIMAL(18,4),
CREDIT DECIMAL(18,4),
CREDIT_EX DECIMAL(18,4),
CURRENCY_ID INTEGER,
STATUS VARCHAR(20),
EX_RATE DECIMAL(18,4),
ENTRY_DATE VARCHAR(20),
ENTRY_TIME VARCHAR(20),
BRANCH_CODE VARCHAR(20),
LAST_SYNCED VARCHAR(20),
LAST_UPDATED DECIMAL(18,4),
ENTRY_DATE2 VARCHAR(20),
/* Keys */
PRIMARY KEY (JOURNAL_ID)
);
SQLite table structure:
CREATE TABLE ACC_JOURNAL (
ACCOUNT_HEAD_ID INTEGER,
REF_ID INTEGER,
REF_TYPE VARCHAR (20),
DESCRIPTION VARCHAR (512),
DEBIT DECIMAL (18, 4),
DEBIT_EX DECIMAL (18, 4),
CREDIT DECIMAL (18, 4),
CREDIT_EX DECIMAL (18, 4),
CURRENCY_ID INTEGER,
STATUS VARCHAR (20),
EX_RATE DECIMAL (18, 4),
ENTRY_DATE VARCHAR (20),
ENTRY_TIME VARCHAR (20),
BRANCH_CODE VARCHAR (20),
LAST_SYNCED VARCHAR (20),
LAST_UPDATED DECIMAL (18, 4),
ENTRY_DATE2 VARCHAR (20),
JOURNAL_ID INTEGER PRIMARY KEY AUTOINCREMENT
);
count(*)
instead.