MySQL оптимизировать предложение - PullRequest
0 голосов
/ 23 марта 2010

У меня есть простая таблица, где я должен извлечь некоторые записи. Проблема в том, что функция оценки - это очень трудоемкая хранимая процедура, поэтому я не должен вызывать ее дважды, как в этом предложении:

SELECT *, slow_sp(row) FROM table WHERE slow_sp(row)>0 ORDER BY dist DESC LIMIT 10

Сначала я подумал об оптимизации следующим образом:

SELECT *, slow_sp(row) AS value FROM table WHERE value>0 ORDER BY dist DESC LIMIT 10

Но это не работает, поскольку "значение" не обрабатывается при вычислении предложения WHERE.

Есть идеи, чтобы оптимизировать это предложение? Спасибо.

1 Ответ

2 голосов
/ 23 марта 2010

Что делает slow_sp? Чтобы начать оптимизацию запроса, вы должны добавить индекс на dist.

Чтобы ваш второй запрос работал, используйте HAVING вместо WHERE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...