I have MySQL table
CREATE TABLE IF NOT EXISTS `users` (
`IDClient` int(11) NOT NULL,
`Phone` varchar(15) NOT NULL,
`passw` varchar(32) NOT NULL,
`ip` varchar(50) DEFAULT NULL COMMENT 'IP адрес'
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50100 PARTITION BY KEY (Phone)
PARTITIONS 10 */;
ALTER TABLE `users`
ADD PRIMARY KEY (`Phone`),
ADD KEY `IDClient` (`IDClient`),
ADD KEY `ip` (`ip`);
It about 3 million records. When the site is a little loaded, sql request
SELECT * FROM users WHERE phone='9123456789' LIMIT 1
takes about 0.03 seconds, but when the site more loaded this time can reach up to 5 seconds. Who in the subject, can have any advice? Even 0.03 seconds, i think, much, for such a trivial request.
explain SELECT * FROM `users` where Phone="9123456789" limit 1
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users const PRIMARY PRIMARY 47 const 1 NULL
Maybe it helps the real partition table on 2,5,10 ... tables? Thank you!