проблема производительности запроса Informix - PullRequest
1 голос
/ 21 октября 2010

Для возврата следующего SQL требуется 62 секунды:

select getCreditBalance(Customerid)
  from business_apply
 where serialno = '20101013000005'

Как это настроить?

Пожалуйста, скажите мне подробно.

Я просто хочу знать шаги, которые я должен сделать, чтобы настроить его. мы используем IDS 9.04.

Как и в JDBC, я не вижу вывод при SET Explain ON

выполнить запрос в dbaccess (с включенным объяснением SET)?

Моя проблема в том, что я не могу получить план выполнения ... Если я смогу его получить, я опубликую его здесь.

Ответы [ 2 ]

3 голосов
/ 21 октября 2010

Вы не дали нам много работы.

Основные вопросы

  • Какой тип столбца 'SerialNo'?
    • Если это числовой столбец, не заключайте в кавычки искомое значение.
  • Есть ли индекс для 'SerialNo'?

Индекс важен;тип не так важен.

Важный вопрос

  • Что делает процедура getCreditBalance ()?

Вспомогательные вопросы

  • Какую версию Informix вы используете?Это IDS или SE или что-то еще?
  • Когда вы в последний раз запускали UPDATE STATISTICS?
  • Есть ли проблема с подключением к базе данных, или это определенно медленный запрос?
  • На каком языке вы используете запрос?
  • Существуют ли сети с огромными задержками?
  • На каком уровне изоляции вы работаете?
  • Насколько велика таблица Business_Apply?
    • Каков размер каждой строки?
    • Сколько строк?
  • Какие другие таблицы доступны для процедуры getCreditBalance ()?
    • Насколько они велики?
    • Есть ли у них соответствующие индексы?
  • На каком компьютере работает сервер Informix?
  • Что план запроса сообщает вам, когда вы запускаете с SET EXPLAIN?
  • Есть ли вероятность того, что у вас вышел из строя диск, и операционная система тратит время на его чтение?
1 голос
/ 21 октября 2010

Убедитесь, что есть индекс по серийно и настройте код в функции getCreditBalance. Не зная, что это делает, трудно оказать вам дополнительную помощь.

...