vladislav |
Отправлено: 03.05.2004, 10:55 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Помогите разобраться с индексами, я совсем запутался.
Я программированием занимаюсь исключительно для себя и всегда работал с БД напрямую без индексов. А сейчас решил попробовать, что это такое и с чем это едят.
Чесно говоряя я так до конца и не разобрался для чего они нужны. Но насколько понял для лучшей сохранности данных при сбое. Если не трудно подскажите или ссылочку какую киньте чтобы почитать.
Соответственно индекы (?вторичные) создаются только на ключевые поля, как я понял. Если их нет выдается ошибка что таблица не проиндексирована.
Отсюда вопрос, как отследить есть ли ключевые поля.
Ещё вопрос: Обойтись без них можно, но чем это чревато?
Ещё есть так называемые индексные файлы. Вот они как я понял нужны обязательно, но как их создать и как с ними работать незнаю.
Может быть про это где написано?
P.S. БД paradox.
|
|
olegenty |
Отправлено: 03.05.2004, 12:07 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
QUOTE |
всегда работал с БД напрямую без индексов
|
напрямую не значит без индексов. тем более, что при наличии первичного ключа индекс по полям первичного ключа имеет место быть и рождается "без спроса" по факту создания первичного ключа.
QUOTE |
Но насколько понял для лучшей сохранности данных при сбое.
|
совсем нет, они служат для ускорения выборки. помогает в случае, когда условие выборки определённым образом ложится на поля индекса. потому что без индексов при выборке просматриваются ВСЕ поля таблицы. а при наличии полезного индекса — лишь те, на которые указывает индекс. пример: выборка из таблицы в 1000000 записей... без индексов будет просмотрен (прокачан, профетчен) весь набор в 1000000 записей. при наличии индекса — сам и ндекс и те записи, на которые он укажет. в сотни раз быстрее работает. тут тебе очень не хватает теории. для начала почитай о реляционных базах данных. потом о конкретных СУБД. одна беда — не посоветую литературы.
QUOTE |
Соответственно индекы (?вторичные) создаются только на ключевые поля, как я понял
|
нихрена не соответственно. нет понятия первичный и/или вторичный индекс. есть первичный ключ. по нему есть уникальный индекс. как правило по возрастанию значений ключевых полей. и все остальные другие индексы, которые ты создаёшь, руководствуясь логикой функциональности своего приложения. пример: телефонный справочник. первичный ключ, и по нему уникальный индекс — № телефона. но невредны индексы один по имени и один по адресу — для быстрого поиска по соответствующим полям, и один — по всем полям, для поиска по частям полей.
QUOTE |
Отсюда вопрос, как отследить есть ли ключевые поля.
|
здрасьте, приехали. а кто, как ни ты, их назначил? ну а если нет, открывай своё средство администрирования БД и смотри. в твоём случае это, вероятнее всего, Database Desktop. он всю эту инфу отображает на ура.
QUOTE |
Обойтись без них можно, но чем это чревато?
|
чревато в лучшем случае тормозами, а в худшем — аномалиями в твоей БД. об этом читай теорию реляционных БД и нормализацию в частности. практика показывает, что НФБК (нормальной формы Бейс-Кодда) за глаза достаточно, чтобы аномалий не было. аномалия — это неактуальность данных.
QUOTE |
Ещё есть так называемые индексные файлы. Вот они как я понял нужны обязательно, но как их создать и как с ними работать незнаю.
|
наличие индексных файлов определяется наличием индексов и, на данный момент, только в плоских файл-серферных СУБД, к коим относятся Paradox и DBASE. в остальных случаях это очень сильно зависит от опций конкретной СУБД. работать с ними просто — пиши инструкции CREATE INDEX, ALTER INDEX, DROP INDEX... остальное движок BDE сделает за тебя. если же ты работаешь с компонентами прямого доступа к БД Paradox, то читай инфу по своим компонентам.
А вот ссылок по парадоксу у меня нет. Я с Interbase/Firebird/Yaffil и MS SQL дружу хорошо. Про парадокс могу только порассказать, но уж лучше книгу найди...
|
|
vladislav |
Отправлено: 03.05.2004, 12:19 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
QUOTE |
QUOTE |
Отсюда вопрос, как отследить есть ли ключевые поля.
|
QUOTE (olegenty @ 03/05/2004, 13:09) |
здрасьте, приехали. а кто, как ни ты, их назначил? ну а если нет, открывай своё средство администрирования БД и смотри. в твоём случае это, вероятнее всего, Database Desktop. он всю эту инфу отображает на ура.
|
|
Всё это конечно хорошо, но если взять и грохнуть файл с ключами?
Отредактировано vladislav — 03/05/2004, 13:23 |
|
olegenty |
Отправлено: 03.05.2004, 12:46 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
не, не так, с индексом по ключу. инфа о ключе всё равно хранится в заголовке той таблицы, по которой был ключ. в Database Desctop зайди всё отутуда поправь... хотя "грохнулся" ... у меня за всю жизнь раз база падала. и я был счастлив, что в допромышленный период. на ошибках надо учиться. в идеале не более раза. пересоздай, и забудь слово "грохнулся".
|
|
vladislav |
Отправлено: 03.05.2004, 13:03 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Спасибо за информацию.
Может удастся найти где нибудь книжки. |
|
olegenty |
Отправлено: 05.05.2004, 08:57 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
через поисковые сайты поищи... инфы полно...
|
|
|