![]() |
|
Модераторы: Akina |
![]()
|
|
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Уважаемые!
Ищу в сети информацию о том, как использовать индексы в базах данных (программирую, естественно, на VB). А так же о том, возможно ли их использовать в плоских базах данных dbf (ADO или DAO)... Кто владеет информацией, подскажите, пожалуйста... Надо позарез! У меня в DB больше сотни тысяч записей, и база растёт ежедневно на 30000 записей... Без индексов происходят постоянные тормоза... Горю!!! |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Индекс не используют!
Ч помощью индексов ОПТИМИЗИРУЮТ работу с БД. Скажем ускоряют поиск, следят за уникальностью и т.д. -------------------- Я желаю всем Счастья! |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Это я уже понял.
Вопрос в том, КАК это делают. Что-то в тех источниках, которые я нашёл, нет примеров работы с индексами... Или это должен делать сам драйвер Jet? |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Если структуру БД ты создаеш программно, то и индексы должен создать програмно.
В зависимости от того, каким провайдером ты создаеш БД могу привести пример кода. -------------------- Я желаю всем Счастья! |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 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 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
А какого рожна ты выбрал ТАКОЙ формат данных???
Тут тебе никакие индексы не помогут в принципе. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Да!
У меня к этой БД обращаются только или для чтения уже имеющихся записей, или для добавления новых. В основном, для добавления новых... Добавлено @ 13:03 Akina ! Повторяю... С базами работаю второй месяц. Начал с нуля. Учитилей нет. Справочников тоже практически нет. Только одна книга Евангелоса Петрусоса. Плюс Инет. Вот я и обращаюсь к вам за помощью. Подскажите в какую сторону копать! Добавлено @ 13:05 Знаком только с DAO. ADO только-только начал изучать... |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
mihanik, индекс, как уже говорилось, ты можешь только создать. Использовать его сможет(не факт, что будет использовать) та программная часть, которая обрабатывает твои запросы. А поля у тебя - почему только строковые? Разве в dbf нельзя объявить поля типа DATE или типа Integer? Ведь если при обращении к базе тебе либо приходится мириться с тем, что на строках сравнения больше/меньше и прочие не катят, либо каждый раз явно приводить к численному типу и делать работу за ядро! По этой причине практически невозможно создать индекс - невозможно упорядочить по возрастанию/убыванию индексируемые значения.
Потому копать надо в двух направлениях: - перевести тип полей в то, что ближе по смыслу - если дата, то дата, если число, то число. - создать индексы на нетекстовых полях. А потом сообщить, что у тебя получилось. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Поскольку ты работаешь из VB - используй хранение данных в формате базы данных MS Access (MDB).
Преимущества (некоторые, имхо основные в данном случае):
Недостатки (также некоторые, и также имхо основные в данном случае):
1) Если у тебя откуда-то взялся VB, почему нет локальной MSDN? 2) Кстати, последнюю версию оффлайновой MSDN можно запросто скачать с сайта M$ - http://www.microsoft.com/downloads/details...;displaylang=en 3) Встроенная справка Аксесса достаточно во многом совпадает, а разницу можно почитать в онлайновой MSDN -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
skyboy !
Поля с 1 по 6-й могу преобразовать к нужному типу. Последнее же поле (marka) является уникальным и ни к каким другим типам не приводится... Может быть стоит тогда добавить какое-либо поле Count с автонумерацией? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
||||
|
||||
| mihanik |
|
||||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Akina!
У меня диск с VB за 50 рублей... Как ты думаешь, он лицензионный? skyboy Немного не понял...
Что ты имел в виду? Ля-ля-ля! Жу-жу-жу! Я немного торможу!!! |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
Если у тебя в указанных полях(1, 2, 5, 6, по твоим словам) хранятся числовые значения, значит ты их сравниваешь, вычитаешь, умножаешь и т.д. И каждый раз(при хранении в типе String) тебе приходится вызыватб StrToInt. Мне кажется, лучше пусть это делаеть СУБД. И не факт, что вызов функции преобразования будет вызывать им при каждом обращении
|
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Понял.
Спасибо. Добавлено @ 16:01 Буду думать дальше... |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |