Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Как оптим. справочники и время запроса (Михаил) 13/09/2003 - 21:04:52
      Re: Как оптим. справочники и время запроса (walrus) 14/09/2003 - 03:57:35
      Re: Как оптим. справочники и время запроса (Михаил) 14/09/2003 - 18:18:17
      Re: Как оптим. справочники и время запроса (walrus) 14/09/2003 - 18:28:40
      Re: Как оптим. справочники и время запроса (Валентин) 15/09/2003 - 16:14:55
      Re: Как оптим. справочники и время запроса (DNick) 18/09/2003 - 16:35:55

> Original message text:
> From: Михаил - 13/09/2003 - 21:04:52
> Subject:Как оптим. справочники и время запроса
> -----------------
> Задача: Есть главная таблица (MainTable) и порядка 15 справочных таблиц (Guide№).
> Структура любой справочной таблицы: (id,name)
> Структура главной таблицы: (id,id_Справочник1, ... , id_Справочник15). Требуется вывести главную таблицу на экран, заменяя все индексы на значения из справочников.
> Проблема: если использовать iner join, то получается такой запрос:
> select MainTable.id, Guide1.name, ... ,Guide15.name from (...(MainTable inner join Guide1 on MainTable.id_Guide1=Guide1.id )... inner join Guide15 on MainTable.id_Guide15=Guide15.id )
>
> Этот запрос выполняется 20 секунд и выводит 4 строчки главной таблицы(кол-во строчек правильно).
> Попытался по другому:
> select MainTable.id, Guide1.name, ... ,Guide15.name from MainTable, Guide1, ... ,Guide15 where (MainTable.id_Guide1=Guide1.id) and ... (MainTable.id_Guide15=Guide15.id)
> Этот запрос работает также секунд 20 выводит 8 строчек вместо 4 (каждую по 2-а раза)...
> Попытка заменить 15 справочников одним (структура то одинаковая) тоже ни к чему хорошему не привела...
>
> Подскажите пожалуйста как оптимизировать справочники и время выполнения запроса. Если можно продублируйте ответ на мыло evseev@univ.kiev.ua
>
>
>
>
>


From: Валентин - 15/09/2003 - 16:14:55
Subject:Как оптим. справочники и время запроса
-----------------
1) Выполните запрос из какого-либо редактора.... ODBC медленнее работает чем через libmysql.dll, но не настолько.
2) Цеплять справочники к главной таблицу лучше left join
4) Проверь наличие индексов в главной таблицу на id_справочников и на id справочников в справочниках.
5) Если справочники идентичны то лучше их собрать в одну таблицу, проще будет работать... а свойства если понадобятся -определить типы в другой и сами свойства в третьей.
6) В справочниках добавьте краткое наименование, потому как varchar(128) не самое короткое наименование.
7) Оптимизировать размерность id справочников в справочниках и id_справочников в гланой таблице, т.е. если справочник не будет разрастаться сильно быстрыми темпами, например подразделения или единицы измерения, то зачастую хватает tinyint(4) unsigned (это 256) или smallint(6) unsigned (это 65535).

В общем это не нормально такое время... и еще проверьте не включена ли трассировка в ODBC.
Скорость выбора по 4-м строкам и соединение с 15-ю справочниками должно быть не более 1-2 секунд.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
10747



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |