Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

РАЗБИТЬ БОЛЬШУЮ ТАБЛИЦУ НА МЕНЬШИЕ [D6, dBase, FoxPro]


KonstVD ©   (2002-11-14 13:28:00) 

Есть таблица db с приличным количеством записей, поля, по которым производятся выборки - символьное имя документа и циферное=тип документа[0..9]+ID[0..999999]. Чаще выбирается
по циферному имени. Если разбить таблицу на 10 меньших по типу док-та (db0, db1, ..., db9) и при выборке по циферному Nnnnnnn делать select * from dbN where X=nnnnnn увеличится ли заметно
быстродействие? И насколько? И как тогда правильно делать select из всех таблиц по символьному имени?


Prooksius   (2002-11-14 17:23:00) [1]

100-200 записей - не должно быть тормозов. Поищи, может тормоза из-за чего-то другого.


KonstVD   (2002-11-14 17:00:00) [2]

Да нет, смысл в том, что поиск в основном идет по номеру документа, и программа делает select не на 10 таблиц сразу, а на таблицу с именем начала номера документа. Например, если документ 1nnnnnn - то таблица db1, если 6nnnnnn - то select from db6 и т.п. Выборка из всех таблиц сразу по символьному имени - частный и редкий случай. А записей ~300000. И таблица примерно такая:
ID N 9 0 - циферный ID
NAME C 50 - символьный ID
NAME_N С 30 - символьный ID 2
далее десяток символьных полей - "описания" к предыдущим.
Критерий выбора есть, одновременно выбирается не более 100-200 записей. Индексы по первым двум полям.


Prooksius   (2002-11-14 13:59:00) [3]

Сколько у тебя записей в этой таблице?
Быстродействие увеличится, если юзер не будет тянуть на себя все содержимое таблиц и работать с немерянным кол-вом записей. Все равно со всеми записями он не поработает. Выбирай по какому-то критерию, чтобы меньше было.
А селект - по-моему надо union использовать. Но вот тут насчет быстродействия проблемы, ИМХО.
Я бы не бил на 10 таблиц. Не логично - таблицы содержат одно и то же - документы, так чего же их должно быть 10.
Не вытягивай все данные на клиента. Ограничивай запросы.


Val   (2002-11-14 13:51:00) [4]

думаю, наоборот, время запроса может увеличится при обращении к 10 таблицам, вместо одной.
Используете ли индексы?
Возможно, есть огрехи в структуре бд, приведите пожалуйста структуру таблицы и расскажите общий смысл работы с ней.


Наверх

Титульная страница Поиск, карта сайта Написать письмо