Главная страница
    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.022 c
1-75541
ЗЛОБНЫЙ КАРЛИК
2001-12-25 08:26
2002.01.24
TRichEdit ПОМОГИТЕ!!!


1-75602
~Alice~
2002-01-07 20:48
2002.01.24
тут еще вопрос про написание сервисов для nt


4-75717
Miwa
2001-11-13 09:53
2002.01.24
Windows Media Player


4-75711
AlexandrH
2001-11-21 06:52
2002.01.24
Как перехватить нажатие кнопки Reset и кнопки Power


3-75525
frostbite
2001-12-21 14:48
2002.01.24
Определение структуры БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский