Oper01 |
Отправлено: 05.03.2004, 00:02 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Есть таблица, в которой порядка 50000 записей. В одном поле (формат текстовый) очень много одинаковых строк. Т.е. из 50000 текстовых значений этого поля разных всего лишь штук 10-15. Остальные повторяются. Мне нужно вытащить из этого поля эти разные значения и запихнуть из в ComboBox.
У меня всё это происходит очень медленно, так как просто делаю SQL запрос с сортировкой по этому полю и обычным перебором от 0 до RecordCount тупо добавляю отличную от предыдущей записи в ComboBox. Есть ли способ всё это дело ускорить ? У меня машинка не медленная, а задумывается секунд на 40-50, что же будет на других то ? Подскажите варианты возможных действий !!! |
|
xTrim |
Отправлено: 05.03.2004, 06:30 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
а если так
SQL | select distinct exchange from master.dbf |
|
|
olegenty |
Отправлено: 05.03.2004, 09:33 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
а я бы вообще декомпозицию сделал на две таблицы, и вынес это поле в справочную таблицу. а вязался по целому значению.
|
|
Gedeon |
Отправлено: 05.03.2004, 09:42 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Если БД ваша, то вам пожалуй надо почитать книжечку про реляционные базы данных, а конкретно про нормализацию оных.
Ну и неплохо бы про SQL.
|
|
Guest |
Отправлено: 05.03.2004, 12:08 |
|
Не зарегистрирован
|
Вопрос к xTrim про SQL запрос "select distinct exchange from master.dbf ". Что есть что ? |
|
xTrim |
Отправлено: 05.03.2004, 13:39 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
выбрать неповторяющиеся значения exchange из master.dbf
|
|
Oper01 |
Отправлено: 07.03.2004, 02:26 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
А поле по которому выбирать неповторяющиеся значения ? Не понял как этот запрос будет работать, честное слово. Если не сложно поясните мне тупому . |
|
xTrim |
Отправлено: 09.03.2004, 08:22 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
значения выбираются по полю exchange
|
|
Snake |
Отправлено: 09.03.2004, 10:53 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
Еще можно так попробовать:
CODE | SELECT exchange FROM master.dbf GROUP BY exchange |
По полю exchange неплохо иметь индекс. |
|
Deem |
Отправлено: 09.03.2004, 12:19 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Даешь нормализацию!
|
|
olegenty |
Отправлено: 09.03.2004, 12:33 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Вот и я то же самое говорю, проблемы нет, а сообщений столько, будто и правда проблема.
|
|
Oper01 |
Отправлено: 09.03.2004, 23:21 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Объясните пожалуйста, что такое нормализация ??? У меня жена, ребёнок маленький, ну не успеваю я все умные книжки читать ). |
|
olegenty |
Отправлено: 10.03.2004, 08:12 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
сходи на SQL.RU, где-нибудь там стопудово есть. и на citforum.ru можешь метнуться. по вопросам методов проектирования БД. обычно это декомпозиция и ER.
|
|
Oper01 |
Отправлено: 11.03.2004, 00:22 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Спасибо! |
|
Admin |
Отправлено: 17.03.2004, 14:38 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
QUOTE | Объясните пожалуйста, что такое нормализация |
Конкретно к вашему случаю это означает:
Необходимо вашу таблицу разбить на 2:
В таблице-справочнике будет список этих 10-15 возможных значений
TblSpr
-------
ID Name
1 женат
2 холостой
3 разведенный
4 кастрированный
....
В основной таблице — сами данные
Num Name IDSpr
1 Иванов 1
2 Петров 3
3 Сидоров 2
....
И связываете эти таблицы по полям ID — IDSpr
|
|
Oper01 |
Отправлено: 18.03.2004, 21:08 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Уважаемый, Admin !
С меня стакан ! Всё просто и понятно рассказали !
Видимо я не одинок с женой и ребёнком . |
|