Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.24;
Скачать: CL | DM;

Вниз

Индескация с помощью SQL-запросов.   Найти похожие ветки 

 
Hawk2   (2001-12-21 12:39) [0]

Тут уже был вопрос о индексации, но у меня проблемка иная. Значит есть dbf-файл (используется только для чтения, размер > 5MB) нужно создать индекс по полю (TELA), если создаю с помощью Database Desktop 7 получается индексный файл с расширением ndx (все работает нормально), если создавать с помощью SQLExplorer (CREATE INDEX t_rr_11 ON "t_rr_11.dbf" (TELA)) получается индекс с расширением mdx (тоже работает), но если питаюсь создать индекс в собственном приложении (в компоненте TQuery даю тот же запрос CREATE INDEX t_rr_11 ON "t_rr_11.dbf" (TELA)) выскакивает сообщение:
File or directory not exist
"C:\.....\t_rr_11.mdx"
"C:\.....\t_rr_11.cdx" причем тут индекси если я их еще только питаюсь создать? И еще при создании индексов с помощью SQL-запросов расширение индексов получается в соответствии с типом БД?


 
Внук ©   (2001-12-21 14:20) [1]

Дело скорее всего вот в чем: для dbf предварительно был создан индекс (mdx). Затем этот индекс был удален или перемещен в другой каталог. Затем попытка создать индекс через TQuery. Чтобы проиндексировать dbf, его естественно нужно открыть и прочитать (не вручныю разумеется, сам запрос это делает). В заголовке dbf-файла есть байт, где записано, созданы ли для него индексы или нет. Значение байта - созданы (когда создавался mdx), а на самом деле их нет, система ругается. Лечится, по крайней мере, двумя способами - через Database Desktop или ручной правкой заголовка (сам не помню, какой байт).
Ответ на последний вопрос - однозначно.


 
Hawk2   (2001-12-21 17:14) [2]

Внук ОГРОМНОЕ СПАСИБО за обширное пояснение. Можно задать еще один вопрос: как SQL-запросы работают с индексами? Например у меня есть файл БД и есть к нему индекс. Когда я делаю выборку с помощью SELECT данные выводятся неупорядочеными тоесть существующий индексный файл не принимается во внимание (получается отбор происходит как в неиндексированой базе). И с другой стороны если в операторе SELECT использовать ORDER BY (somefield), то данные выводятся упорядочеными даже при отсутствии индексного файла.


 
ValeraVV ©   (2001-12-21 17:51) [3]

В принципе, если есть "order by" кляуза, то SQL всегда сортирует, но если есть индекс, то сортировка происходит быстрее, чем без индекса. Это еще вопрос, использует ли твой драйвер именно твой индекс или нет.


 
Anatoly Podgoretsky ©   (2001-12-21 20:32) [4]

SQL использует индексы только для ускорнения запросов, а не для сортировки



Страницы: 1 вся ветка

Текущий архив: 2002.01.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
3-75515
_Mihail_
2001-12-18 10:32
2002.01.24
DBGrid


14-75662
Undertaker
2001-11-28 16:55
2002.01.24
Кто знает JAVA - помогитеееееее !


1-75565
BuG
2002-01-05 01:56
2002.01.24
помагите плиз


1-75606
ЮРИЙ_К
2002-01-04 10:37
2002.01.24
Правила хорошего тона при работе с INI-файлами ???


1-75557
bit
2002-01-06 10:38
2002.01.24
Error