Here a description of the test case:
Hardware: Quad-Core AMD, 1.6GHz
4GB RAM
10 GB HDD
Software: Ubuntu Server 12.04
Openjdk-7-jdk
H2 v.2010.07.13
In the database are 24 tables. But only one table has 250.000 datasets (rows of data). The table structure of this table is like this:
I'm using MySQL-Mode:
CREATE TABLE IF NOT EXISTS `products` (
`products_id` int(11) NOT NULL AUTO_INCREMENT,
`products_model` varchar(64) DEFAULT NULL,
`products_str` varchar(64) NOT NULL,
`products_hausnr` varchar(50) NOT NULL,
`products_plz` varchar(32) NOT NULL,
`products_ort` varchar(64) NOT NULL,
`products_bndl` int(1) NOT NULL,
`products_refnr` varchar(32) NOT NULL,
`products_bj` varchar(32) NOT NULL,
`products_haus` int(11) NOT NULL,
`products_bhaus` int(11) NOT NULL,
`products_wohn` int(11) NOT NULL,
`products_einzelhandel` int(11) NOT NULL,
`products_gastgewerbe` int(11) NOT NULL,
`products_land_forst` int(11) NOT NULL,
`products_rooms` decimal(3,1) NOT NULL,
`products_bathrooms` int(3) NOT NULL,
`products_etagen` int(11) NOT NULL,
`products_wf` decimal(6,2) NOT NULL,
`products_nf` decimal(6,2) NOT NULL,
`products_gf` decimal(6,2) NOT NULL,
`products_beb` int(11) NOT NULL,
`products_ersch` int(11) NOT NULL,
`products_nutz` int(11) NOT NULL,
`products_verma` int(11) NOT NULL,
`products_heiz` int(11) NOT NULL,
`products_ensth` int(11) NOT NULL,
`products_enstw` int(11) NOT NULL,
`products_stat` int(11) NOT NULL,
`products_miet` int(11) NOT NULL,
`products_image` varchar(64) DEFAULT NULL,
`products_image_title` varchar(100) NOT NULL,
`products_price_anfra` varchar(5) NOT NULL DEFAULT 'false',
`products_price` decimal(15,4) NOT NULL,
`products_nebkost` decimal(15,4) NOT NULL,
`products_kaut` decimal(15,4) NOT NULL,
`products_provision` decimal(3,2) NOT NULL,
`products_provision_type` varchar(6) NOT NULL DEFAULT 'normal',
`products_discount_allowed` decimal(3,2) NOT NULL DEFAULT '0.00',
`products_date_added` datetime NOT NULL,
`products_last_modified` datetime DEFAULT NULL,
`products_date_available` datetime DEFAULT NULL,
`products_from` int(11) NOT NULL,
`products_from_id` varchar(32) NOT NULL,
`products_fertig` varchar(5) NOT NULL DEFAULT 'false',
`products_roll` varchar(5) NOT NULL DEFAULT 'false',
`products_gara` varchar(5) NOT NULL DEFAULT 'false',
`products_einl` varchar(5) NOT NULL DEFAULT 'false',
`products_ebk` varchar(5) NOT NULL DEFAULT 'false',
`products_bt` varchar(5) NOT NULL DEFAULT 'false',
`products_gmb` varchar(5) NOT NULL DEFAULT 'false',
`products_paz` varchar(5) NOT NULL DEFAULT 'false',
`products_bw` varchar(5) NOT NULL DEFAULT 'false',
`products_kell` varchar(5) NOT NULL DEFAULT 'false',
`products_wbs` varchar(5) NOT NULL DEFAULT 'false',
`products_kurzbeb` varchar(5) NOT NULL DEFAULT 'false',
`products_noprov` varchar(5) NOT NULL DEFAULT 'false',
`products_bgn` varchar(5) NOT NULL DEFAULT 'false',
`products_share` varchar(5) NOT NULL DEFAULT 'false',
`products_afa` varchar(5) NOT NULL DEFAULT 'false',
`products_bezfrei` varchar(9) NOT NULL DEFAULT 'value',
`products_bezfrei_value` varchar(255) NOT NULL,
`pay_ad` varchar(5) NOT NULL DEFAULT 'false',
`payed` varchar(5) NOT NULL DEFAULT 'false',
`ad_type` varchar(7) NOT NULL DEFAULT 'partner',
`valid_date` datetime DEFAULT NULL,
`extended` varchar(5) NOT NULL DEFAULT 'false',
`extension_date` datetime DEFAULT NULL,
`openimmo_id` varchar(200) NOT NULL,
PRIMARY KEY (`products_id`),
KEY `idx_products_date_added` (`products_date_added`)
) ;
And I run the following SQL-Queries:
First one: SELECT * FROM products WHERE products_ort = 'Berlin'
|
second: SELECT * FROM products AS a, products_wohn AS b WHERE
a.products_ort = 'Dresden' AND a.products_wohn = b.products_wohn_id
AND a.products_rooms = 2.0
AND b.products_wohn_name ='Erdgeschoss' First query they need first time = 1543 ms, second = 630, third= 497, and so on Second Query first run =173 ms, second = 122 ms, third= 121 I use Apache Jmeter for Benchmarks with JDBC. The queries run in a row, without a break. And five times in a rows without a break. If I run only the second Query without the first one, it begins with 123 ms and after that ist needs only 6 ms, 7 ms and so on.
|