Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];

Вниз

Индескация с помощью 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.016 c
1-75560
Starkom
2001-12-22 13:45
2002.01.24
Starkom


7-75688
VS
2001-10-08 13:22
2002.01.24
Конвентирование String в PChar


14-75657
Serega__2
2001-11-29 10:40
2002.01.24
Господа, а что с rxlib`ом случилось?


1-75558
Tolik2002
2002-01-05 11:29
2002.01.24
Ресурсы


6-75639
krimer
2001-11-02 16:35
2002.01.24
console server





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский