|
При добавлении поля в WHERE увеличивается время получения
|
|||
---|---|---|---|
#18+
Добрый день Есть таблица CREATE TABLE `account` ( `aid` int(11) NOT NULL, `value1` DOUBLE NOT NULL DEFAULT 0, `value2` DOUBLE NOT NULL DEFAULT 0, `date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=InnoDB ALTER TABLE `account` ADD UNIQUE KEY `aid` (`aid`); В таблице 10 млн строк Если я делаю запрос SELECT * FROM `account` WHERE `value1` >= 198.74299 AND `value1` <= 258.7609 AND `value2` >= 455.627680 AND `value2` <= 895.641954 запрос занимает менее 0.1 секунды Но если добавить к выбору еще поле `date`: SELECT * FROM `account` WHERE `value1` >= 198.74299 AND `value1` <= 258.7609 AND `value2` >= 455.627680 AND `value2` <= 895.641954 AND `date` >= '2019-04-07 11:44:00' то запрос занимает около 1.8 секунд! Причем если делать выбор просто по полю `date` то запрос очень быстрый SELECT * FROM `account` WHERE `date` >= '2019-04-07 11:44:00' занимает около 0.1 секунды Почему добавление AND `date` >= '2019-04-07 11:44:00' приводит к такому резкому замедлению? Я пытался делать выбор таким форматом AND `date` >= 20190407114400 но это существенно не увеличивает скорости (причем я заметил во время тестов, что выбор по такому формату `date` >= 20190407114400 сам по себе работает очень быстро) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2019, 15:16 |
|
При добавлении поля в WHERE увеличивается время получения
|
|||
---|---|---|---|
#18+
Изучайте команду explain для просмотра плана запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2019, 22:21 |
|
|
start [/forum/topic.php?fid=47&msg=39801158&tid=1829191]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 146ms |
0 / 0 |