Проверить правильность (целостность) индекса для таблицы FoxPro | |
---|---|
Rotesbyte |
Привет всем!
Как можно точно проверить правильность (целостность) индекса для таблицы FoxPro? Тоесть, надо не перестроить индексы для таблицы, а точно выяснить битый индекс у таблицы или нет. |
Re: Проверить правильность (целостность) индекса для таблицы FoxPro | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
А зачем выяснять? Перестроил и все
------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: Проверить правильность (целостность) индекса для таблицы FoxPro | |
---|---|
IGOR_SMIRNOVSKY Сообщений: 132 Откуда: СПб Дата регистрации: 02.03.2005 |
2Rotesbyte
Например, см. вложение. Результат: выдаст сообщение или Фокс рухнет. 2AleksM индексирование больших таблиц занимает время, функция может ответить быстрее. ------------------ дураком помру |
Re: Проверить правильность (целостность) индекса для таблицы FoxPro | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
Цитата:Эта задача по затратам сопоставима с построением индекса заново. По сути, индекс - это пара значений: значение ключа - номер записи. Т.е. надо перебрать ВСЕ записи как в таблице, так и в индексе, заново вычислить значение ключа и сравнить с номером записи в индексе. И чем это отличается от полного перестроения индекса? |
Re: Проверить правильность (целостность) индекса для таблицы FoxPro | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi Владимир!
Есть одно существенное отличие - проверка не потребует EXCLUSIVE доступа. Хотя по времени скорее всего займёт БОЛЬШЕ времени чем перестроение индекса. И что ещё более печально - нельзя полагаться на "штатный" доступ к индексу. Например там образовался цикл (это сравнительно легко сделать) - и мы просто попадаем в бесконечную беготню между парой-тройкой записей. Если бы я решал такую задачу, то сначала попытался бы восстановить по индексу содержимое таблицы (т.е. извлёк из индекса все пары ключ-номер записи), проверил на "дубли", на "пропущенные номера" - если индекс без фильтров и неUNIQUE, наконец в режиме с отключенным индексом сравнил реальные данные с восстановленными... Хотя на 100% гарантию я не дам P.S. Естественно что катастрофические повреждения индекса (в частности потеря собственно cdx файла, его ЗАнуление, или обрезание до размера 0 байт, сбой на верхнем уровне бинарного дерева - где хранится инфа о тегах) - вызовут при нормальном стечении обстоятельств фоксовую ошибку (которую МОЖНО и НУЖНО отловить) - ну и лишь в самом плохом случае слёт по C005 или ещё какой-то "неловимый" слёт программы. P.P.S. Недоделанный проектик "восстанавливающий" по CDX индексные ключи есть, но заброшен (надеюсь временно ) ------------------ WBR, Igor |
© 2000-2024 Fox Club  |