We have 3 large tables. All holding around 4 million records each. We have made them all into MEMORY tables.
DROP TABLE IF EXISTS TWI_READ
.xxx_IND95
;
CREATE TABLE TWI_READ
.xxx_IND95
(
id
int(11) unsigned NOT NULL,
ext
varchar(20) NOT NULL default ‘’,
PRIMARY KEY (id
),
KEY IND95
(ext
,id
)
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS TWI_READ
.xxx_IND46
;
CREATE TABLE TWI_READ
.xxx_IND46
(
id
int(11) unsigned NOT NULL,
rank
mediumint(9) unsigned default NULL,
PRIMARY KEY (id
),
KEY IND46
(rank
,id
)
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS TWI_READ
.xxx_IND6
;
CREATE TABLE TWI_READ
.xxx_IND6
(
id
int(11) unsigned NOT NULL,
end_datetime
datetime default NULL,
PRIMARY KEY (id
),
KEY IND6
(end_datetime
,id
)
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
When we run this simple query it takes 4 seconds to run. We were assuming it would run in less than 1 seconds. Do you know why it would take so long?
SELECT IND6.ID from xxx_IND6 IND6, xxx_IND46 IND46 , xxx_IND95 IND95 Where 1=1 and IND6.id = IND46.id and IND6.id = IND95.id and IND95.EXT NOT IN (‘’, ‘com’, ‘org’, ‘cc’, ‘info’, ‘name’, ‘biz’, ‘tv’, ‘us’, ‘ws’, ‘mobi’, ‘de’, ‘am’, ‘fm’, ‘eu’, ‘ca’, ‘me’, ‘asia’, ‘in’, ‘fr’, ‘ch’, ‘es’, ‘uk’, ‘la’, ‘cn’, ‘nl’, ‘no’, ‘au’, ‘pro’, ‘kr’, ‘jp’, ‘it’, ‘ru’) Order by IND46.RANK Desc, IND46.ID Desc Limit 100, 50
Octo