2013-08-15 4 views
0

В моей таблице содержится 97 столбцов с типом данных varchar (200) около 80% и bigint, char.моя инструкция SELECT очень медленная

выберите отсчет (*) от туЬаОго он вернется 4500 строк

Я тестирую 100 строк с SQL заявлением

выберите * от туЬаОго .Это времени использования около 2,3 мин

Я думаю, , это слишком медленно, если вернуть всю запись

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

мой дб сервер db2 9,5

ответ

0

Первое, что вы должны сделать, чтобы улучшить производительность прекратить использование SELECT *. Перепишите запрос, чтобы получить нужные столбцы.

Второе, что нужно сделать, это добавить предложение WHERE. Вам действительно нужно вернуть все строки таблицы?

Третья вещь индексы, делает вам таблицу есть какие-либо, вы можете использовать индексированные столбцы в WHERE заявлении и т.д.

What is the reason not to use select *?

http://weblogs.asp.net/jgalloway/archive/2007/07/18/the-real-reason-select-queries-are-bad-index-coverage.aspx

+0

для конкретного столбца Я сделал. Очень медленно тоже. Мне нужно вернуть все строки из таблицы 4500, запись - это данные из UAT ENV.at PRD. Он думает о 10000 строк вверх. моя таблица имеет 1 индекс для data_month. –

0

Вам нужно изолировать, что медленно, запрос или отображение запроса. Я предполагаю, что это комбинация обоих.

Когда у вас есть 97 столбцов, каждый из которых является varchar (200), sql не может хранить всю информацию в той же строке в page. Наихудший сценарий - 97 * 202 (я использовал 202 вместо 200, потому что sql должен хранить длину varchar в каждом столбце, и я считаю, что он хранит его как два байта). 19594, который намного больше, чем строка на странице, может ручка. TL; DR; нормализовать таблицу и разбить столбцы на логические единицы на другой таблице.

Кроме того, выполнение SELECT * FROM X приведет к полному сканированию таблицы, которое намного медленнее, чем запрос на индексированный столбец.

Если вы должны сделать SELECT * FROM X, и у вас должно быть 97 столбцов, пожалуйста, измените типы данных столбцов на меньший тип данных (int, tinyint, char (10)), это оптимизирует хранилище и должно ускорить запрос.

+0

спасибо, я постараюсь сообщить вам позже –

+0

Я пытаюсь изменить данные на меньшее и запросить его снова. тот же результат. Новая информация для запроса возвращает около 36 записей/time.for 4500 записи используют около 20 минут. toad бесплатно 4.7 бесплатная версия –

+0

Вы разместите определение таблицы и запрос, пожалуйста. – gh9

Смежные вопросы