Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> индексы в базах данных, преодоление тормозов при обработке DB 
V
    Опции темы
mihanik
  Дата 20.6.2006, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Уважаемые!

Ищу в сети информацию о том, как использовать индексы в базах данных (программирую, естественно, на VB).
А так же о том,  возможно ли их использовать в плоских базах данных dbf (ADO или DAO)...
Кто владеет информацией, подскажите, пожалуйста...

Надо позарез!

У меня в DB больше сотни тысяч записей, и база растёт ежедневно на 30000 записей...
Без индексов происходят постоянные тормоза...

Горю!!!
 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Naghual
Дата 20.6.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Индекс не используют!
Ч помощью индексов ОПТИМИЗИРУЮТ работу с БД.
Скажем ускоряют поиск, следят за уникальностью и т.д. 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
mihanik
Дата 20.6.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Это я уже понял.
Вопрос в том, КАК это делают.
Что-то в тех источниках, которые я нашёл, нет примеров работы с индексами...
Или это должен делать сам драйвер Jet? 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Naghual
Дата 20.6.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Если структуру БД ты создаеш программно, то и индексы должен создать програмно.
В зависимости от того, каким провайдером ты создаеш БД могу привести пример кода. 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
mihanik
Дата 20.6.2006, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



БД создал, используя Visual Data Manager.

DBF (Dbase 5.0)

Поля
1. DATE : STRING*6
2. KODE : STRING*2
3. NOM : STRING*12
4. KODEP : STRING*15
5. NOM1 : STRING*4
6. NOM2 : STRING*6
7. MARKA : STRING*13

В качестве индекса выбрал поле marka.

Поля 1, 2, 5, 6 могу перевести к типу long, или Interger.
Это даст некоторое ускорение, но кардинально ситуацию не изменит... 

 

Это сообщение отредактировал(а) mihanik - 20.6.2006, 12:50


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Akina
Дата 20.6.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



А какого рожна ты выбрал ТАКОЙ формат данных??? 

Тут тебе никакие индексы не помогут в принципе. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mihanik
Дата 20.6.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Да!
У меня к этой БД обращаются только или для чтения уже имеющихся записей, или для добавления новых.
В основном, для добавления новых...

Добавлено @ 13:03 
Akina !

Повторяю...
С базами работаю второй месяц. smile 
Начал с нуля.
Учитилей нет.
Справочников тоже практически нет. smile 
Только одна книга Евангелоса Петрусоса.
Плюс Инет.
Вот я и обращаюсь к вам за помощью.
Подскажите в какую сторону копать!

Добавлено @ 13:05 
Знаком только с DAO.

ADO только-только начал изучать... smile  


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
skyboy
Дата 20.6.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



mihanik, индекс, как уже говорилось, ты можешь только создать. Использовать его сможет(не факт, что будет использовать) та программная часть, которая обрабатывает твои запросы. А поля у тебя - почему только строковые? Разве в dbf нельзя объявить поля типа DATE или типа Integer? Ведь если при обращении к базе тебе либо приходится мириться с тем, что на строках сравнения больше/меньше и прочие не катят, либо каждый раз явно приводить к численному типу и делать работу за ядро! По этой причине практически невозможно создать индекс - невозможно упорядочить по возрастанию/убыванию индексируемые значения.
 Потому копать надо в двух направлениях:
- перевести тип полей в то, что ближе по смыслу - если дата, то дата, если число, то число.
- создать индексы на нетекстовых полях. 
А потом сообщить,  что у тебя получилось. 
PM MAIL   Вверх
Akina
Дата 20.6.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Поскольку ты работаешь из VB - используй хранение данных в формате базы данных MS Access (MDB).

Преимущества (некоторые, имхо основные в данном случае):
  • Не требуется дополнительных ODBC-драйверов, а равно их настройка.
  • Работа возможна через любой тип доступа данных, от Jet до ADO.
  • Возможно хранение таблиц, статических запросов, врЕменных запросов, форм и отчетов, использование хранимых процедур.
  • Нормальное использование индексов (впрочем для ПОЛНОЦЕННОГО использования приходится позюкаться со структурами запросов - ибо нет отображения плана выполнения).
  • Встроенная система разграничения доступа к данным, паролирование, а также шифрование, пусть и дерьмовое.
  • Возможность макетирования и отладки без VB (да и вообще построение полноценного приложения).

Недостатки (также некоторые, и также имхо основные в данном случае):
  • Необходимость периодического обслуживания БД (сжатие, чистка) - впрочем, возможно программно, в т.ч. из клиентской программы.
  • Сравнительно медленная работа при большом числе одновременных подключений (оплоки начинаешь чувствовать уже после 5 клиентов).
По части справочных материалов:

1) Если у тебя откуда-то взялся VB, почему нет локальной MSDN? 
2) Кстати, последнюю версию оффлайновой MSDN  можно запросто скачать с сайта M$ - http://www.microsoft.com/downloads/details...;displaylang=en
3) Встроенная справка Аксесса достаточно во многом совпадает, а разницу можно почитать в онлайновой MSDN  


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mihanik
Дата 20.6.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



skyboy  !
Поля с 1 по 6-й могу преобразовать к нужному типу.
Последнее же поле (marka) является уникальным и ни к каким другим типам не приводится...

Может быть стоит тогда добавить какое-либо поле Count  с автонумерацией?
 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
skyboy
Дата 20.6.2006, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Цитата(mihanik @  20.6.2006,  13:23 Найти цитируемый пост)
Может быть стоит тогда добавить какое-либо поле Count  с автонумерацией?

А почему же нет? Или в dbf такое невозможно? Можешь привести к адекватному типу - приводи. Нечего "вручную" преобразовывать smile
 
PM MAIL   Вверх
mihanik
Дата 20.6.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Akina!

Цитата

1) Если у тебя откуда-то взялся VB, почему нет локальной MSDN?


У меня диск с VB за 50 рублей...
Как ты думаешь, он лицензионный?

skyboy

Немного не понял...
Цитата

Можешь привести к адекватному типу - приводи. Нечего "вручную" преобразовывать 

Что ты имел в виду?
Ля-ля-ля! Жу-жу-жу!
Я немного торможу!!!
 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
skyboy
Дата 20.6.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Если у тебя в указанных полях(1, 2, 5, 6, по твоим словам) хранятся числовые значения, значит ты их сравниваешь, вычитаешь, умножаешь и т.д. И каждый раз(при хранении в типе String) тебе приходится вызыватб StrToInt. Мне кажется, лучше пусть это делаеть СУБД. И не факт, что вызов функции преобразования будет вызывать им при каждом обращении smile Под "адекватным типом" я понимал тип поля, который ближе всего "стоит" к характеру хранимой информации. Конечно, можно хранить номер дома в виде даты, а дату рождения - в виде строки, но это не есть правильно. Вот, что я имел в виду. 
PM MAIL   Вверх
mihanik
Дата 20.6.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Понял.
Спасибо.

Добавлено @ 16:01 
Буду думать дальше...
 smile  


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0621 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.