Все мои таблицы используют InnoDB, и я установил sphinx sql_range_step на минимум, равный 128. Это значительно улучшило производительность, но все равно очень медленно, если вы сделаете запрос сразу после начала нового шага.
Я уверен, что все сработало бы, если бы я мог уменьшить шаг диапазона до 10 или что-то в этом роде, но кто-то обнаружил, что минимальное значение жестко запрограммировано и нет возможности его изменить (кроме редактирования источника).
Поэтому мне было интересно, есть ли способ справиться с этим напрямую из MySQL. Когда я индексирую базу данных, это не влияет на другие базы данных, поэтому замедляется не весь сервер, а только база данных, которую я индексирую.
Есть ли способ дать меньший приоритет пользователю, запросу или чему-то еще?
Посмотри на этот
Идея состоит в том, чтобы вставить в ваш запрос код, который ограничивает выполнение запроса.
Для наиболее быстрого подхода вы можете использовать такой запрос:
select <your stuff> from <your table where <your condition> and (sleep (0.1) or 1)
Это заставит запрос сфинкса ждать 0,1 секунды перед завершением.
Взгляни на этот похожий пост из StackOverflow. Возможно, вы сможете использовать эти стратегии, чтобы снизить приоритет сфинкса.