BEGIN;
CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t2 VALUES(1,59672,'fifty nine thousand six hundred seventy two');
... 24997 lines omitted
INSERT INTO t2 VALUES(24999,89569,'eighty nine thousand five hundred sixty nine');
INSERT INTO t2 VALUES(25000,94666,'ninety four thousand six hundred sixty six');
COMMIT;
PostgreSQL: | 4.900 |
MySQL: | 2.184 |
SQLite 2.7.6: | 0.914 |
SQLite 2.7.6 (nosync): | 0.757 |
當(dāng)所有的INSERTs被放入一個(gè)事務(wù)處理程序時(shí),SQLite不在需要關(guān)閉再打開數(shù)據(jù)庫(kù),或者使各個(gè)語(yǔ)句間的高速緩存器無(wú)效。在結(jié)束之前它也不用再執(zhí)行fsync()s。當(dāng)解決了這個(gè)問(wèn)題后SQLite 比PostgreSQL和MySQL快很多。.
BEGIN;
CREATE TABLE t3(a INTEGER, b INTEGER, c VARCHAR(100));
CREATE INDEX i3 ON t3(c);
... 24998 lines omitted
INSERT INTO t3 VALUES(24999,88509,'eighty eight thousand five hundred nine');
INSERT INTO t3 VALUES(25000,84791,'eighty four thousand seven hundred ninety one');
COMMIT;
PostgreSQL: | 8.175 |
MySQL: | 3.197 |
SQLite 2.7.6: | 1.555 |
SQLite 2.7.6 (nosync): | 1.402 |
有報(bào)告說(shuō)SQLite在編入索引的表格中表現(xiàn)的不是很好。這個(gè)測(cè)試證明事實(shí)不是這樣的,雖然SQLite在創(chuàng)建索引登錄時(shí)不是很快,但它整體的速度仍是比PostgreSQL和MySQL快。
BEGIN;
SELECT count(*), avg(b) FROM t2 WHERE b>=0 AND b<1000;
SELECT count(*), avg(b) FROM t2 WHERE b>=100 AND b<1100;
... 96 lines omitted
SELECT count(*), avg(b) FROM t2 WHERE b>=9800 AND b<10800;
SELECT count(*), avg(b) FROM t2 WHERE b>=9900 AND b<10900;
COMMIT;
PostgreSQL: | 3.629 |
MySQL: | 2.760 |
SQLite 2.7.6: | 2.494 |
SQLite 2.7.6 (nosync): | 2.526 |
這個(gè)測(cè)試是在一個(gè)沒有索引的25000登錄表格中進(jìn)行100查詢,所以需要瀏覽一個(gè)完整的表格。 SQLite之前的版本在這個(gè)測(cè)試上比PostgreSQL和MySQL慢,但最新版本的SQLite是比前兩者都快的。
BEGIN;
SELECT count(*), avg(b) FROM t2 WHERE c LIKE '%one%';
SELECT count(*), avg(b) FROM t2 WHERE c LIKE '%two%';
... 96 lines omitted
SELECT count(*), avg(b) FROM t2 WHERE c LIKE '%ninety nine%';
SELECT count(*), avg(b) FROM t2 WHERE c LIKE '%one hundred%';
COMMIT;
PostgreSQL: | 13.409 |
MySQL: | 4.640 |
SQLite 2.7.6: | 3.362 |
SQLite 2.7.6 (nosync): | 3.372 |
這個(gè)測(cè)試瀏覽 100 完整表格,但它使用字符串比較,而不是數(shù)字比較。This test still does 100 full table scans but it uses uses string comparisons instead of numerical comparisons. SQLite 比PostgreSQL快三倍,比MYSQL快30%。
CREATE INDEX i2a ON t2(a);
CREATE INDEX i2b ON t2(b);
PostgreSQL: | 0.381 |
MySQL: | 0.318 |
SQLite 2.7.6: | 0.777 |
SQLite 2.7.6 (nosync): | 0.659 |
|
新聞熱點(diǎn)
疑難解答
圖片精選