I have performance problem with my large table. I have to make index and maybe change query to get best performance.
Is best way to make two column index (DeviceID,GPStimestamp)?
Table create:
CREATE TABLE `DEVICES_GPS` (
`Counter` int(10) unsigned NOT NULL auto_increment,
`GPStimestamp` int(10) unsigned NOT NULL,
`DeviceID` bigint(15) unsigned NOT NULL,
`Lat` decimal(9,4) NOT NULL default '0.0000',
`Lon` decimal(9,4) NOT NULL default '0.0000',
`Speed` decimal(5,2) unsigned NOT NULL default '0.00',
`Alt` int(6) unsigned NOT NULL default '0',
`Streetname` varchar(40) NOT NULL default '-',
`Streetnumber` int(5) unsigned NOT NULL default '0',
`Zip` varchar(10) NOT NULL default '-',
`City` varchar(30) NOT NULL default '-',
`Country` varchar(30) NOT NULL default '-',
`Resolved` tinyint(1) unsigned NOT NULL default '0',
`Alarm` tinyint(1) unsigned NOT NULL default '0',
`ServerTimestamp` int(10) unsigned NOT NULL default '0',
`gps_srv_timestamp` int(10) unsigned NOT NULL default '0',
`Course` decimal(5,2) unsigned NOT NULL default '0.00',
`LastIO` char(4) NOT NULL default '0x04',
`Mileage` decimal(10,3) unsigned NOT NULL default '0.000',
PRIMARY KEY (`Counter`),
KEY `FK_dgps_deviceid` (`DeviceID`),
CONSTRAINT `FK_dgps_deviceid` FOREIGN KEY (`DeviceID`) REFERENCES `DEVICES` (`DeviceID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=10472322 DEFAULT CHARSET=utf8
Here is my typical query on that table
EXPLAIN SELECT Counter, GPStimestamp, LastIO FROM DEVICES_GPS WHERE DeviceID=5631010063 AND GPStimestamp>1327675993 AND GPStimestamp<1327740517 ORDER By GPStimestamp;
+----+-------------+-------------+------+-------------------------------+------------------+---------+-------+--------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+------+-------------------------------+------------------+---------+-------+--------+-----------------------------+
| 1 | SIMPLE | DEVICES_GPS | ref | FK_dgps_deviceid | FK_dgps_deviceid | 8 | const | 148784 | Using where; |
+----+-------------+-------------+------+-------------------------------+------------------+---------+-------+--------+-----------------------------+
What is best index on that table and do I have to change my query?
THANKS!