Какие ресурсы необходимы для увеличения скорости работы с большой таблицей sql?
Имеется таблица.
При кол-ве записей в 1.000.000 запрос select count(id) from smi_objects;
выполняется 1 секунду.
Спустя некоторые время, когда таблица стала размером в 1.300.000 записей, идентичный запрос составляет 20 секунд.
Какими основными аппаратными ресурсами пользуется sql в подобных выборках?
Т.к. количество, на которое увеличилась таблица не пропорциональна увеличению времени исполнения запроса, подозреваю что дело в оперативной памяти, но не уверен.
Когда смотришь на время выполнения запросов наносекундах, то время подсчета количества в 20 секунд как-то дико воспринимается, согласен что дело не в ресурсах (ну или это шаред хостинг в глубинке)
JoveLebedev о самых простых, о B-дереве например. Почему вы считаете, что даже если вы не делаете фильтрацию (вы же её имели в виду?) вам не поможет индекс?
ОЗУ, ОЗУ и еще раз ОЗУ.
Как более дешевый паллиатив, можно попробовать перевести базу на более быстрые диски (NAS или SSD).
Но если DB можно закешить в память, то проблем со скоростью чтения у вас не будет :)
На том стоит, например, SAP HANA - пока база помещается в ОЗУ, даже САП работает терпимо. Как база в ОЗУ помещаться перестаёт - ну САП, он и есть САП :)