Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
Есть таблица - 4 поля, примерно 1000 записей Проиндексирована по всем полям Посмотрел - Бог ты мой, а индекс-то аж пятиметровый! Че это с ним? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 18:57 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
угу таблица 4 записи ширина маленькая индекс наверно составной если не ошибаюсь то упрошенно файл индекса - значение индекса + номер записи -> размер отсюда вопрос на чем хотите сэкономить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 19:15 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
не пользуй REINDEX, а сначала удали теги DELETE TAG ... и занова создай INDEX ON ... TAG .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 19:44 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
А каков размер таблицы без индекса ? С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 20:05 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
182 кб Да я посмотрел - такая фигня во всех таблицах! Сначала они были сделаны как свободные, все проиндексированы, занесены кое какие данные... А потом я решил их в базу засунуть. Может из-за этого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 20:11 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
Какая версия FoxPro (включая номер Service Pack)? Какие выражения индекса (приведи команду INDEX)? Что ты подразумеваешь под словом "индекс"? Структурный, мультииндекс, простой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 23:14 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
А по-моему где-то в программе частенько встречается слово "index"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 23:33 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
Hi Jimy! > Че это с ним? 1) Возможно мусор накопился (на foks.wikis.com несколько тем по этому есть) - тогда совет Hel!Riser подойдёт. 2) В VFP7 алгоритм создания индексов таков, что они получаются в 1.5-2 раза больше чем во всех других версиях (зато не так сильно распухает при вставках/модификациях данных, и более сбалансированные деревья получаются -> ищется быстрее). 3) Размер файла индекса в общем рассчитать невозможно - чем более "различные" значения в индексируемых полях - тем больше индексный файл. Если же все значения идентичны, размер файла будет минимальный. 4) В общем размер индексного файла зависит от длинны ключа (которая по максимуму достигает 240 для COLLATE=MACHINE и 120 для остальных). Если бы ты привёл структуры таблиц (размеры полей и т.п.) и структуры индексов (индексные выражения) то мы могли бы проверить у себя :) В принципе исходя из максимальной длинны ключа и числа записей (я так понимаю 1000 это число ВСЕХ записей, включая удалённые), получаем что для набора 5 Мб должно быть порядка 20 индексов с максимальной длинной ключа, а в таблице абсолютно несовпадающие записи. Это конечно маловероятно для таблицы из 4-х полей :) Так что скорее всего именно в "мусоре в cdx" и заключена проблема. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 01:00 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
OPEN DATABASE c:\polina\data\data1 EXCLUSIVE USE c:\polina\data\data1!podraz IN 1 INDEX ON ALLTRIM(podraz)tag podraz ...... USE c:\polina\data\data1!mat IN 6 SELECT 6 iNDEX ON ALLTRIM(izm)tag izm iNDEX ON ALLTRIM(mat)tag mat iNDEX ON (price)tag price iNDEX ON ALLTRIM(chet)tag chet Это кусок из запускающей программы. Там еще много таблиц и все индексируются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 08:18 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
Про версию FoxPro ты почему-то скромно умолчал. Ну, ладно. FoxPro не поддерживает индексы с переменным выражением ключа. Т.е. функция AllTrim() в данном случае означет, что в индексном ключе будут удалены ведущие пробелы и все выражение дополниться пробелами справа до длины соответствующего поля. Это в принципе некорректная задача для индекса. Нельзя так делать. "Прижимать" данные к левому краю (удалять ведущие пробелы) надо на стадии ввода/модификации данных. Взваливать это на индекс - создавать себе проблемы. Сделай простые индексные ключи Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 10:36 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
и фс:е же, перед созданием индексоф по совету Владимира Максимова выполни предварительна DELETE TAG ALL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 11:18 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
А по-моему где-то в программе частенько встречается слово "index"... Как минимум - раз уж всё так тупо каждый раз индексируется, то перед USE сделай ERASE индексному файлу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 19:35 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
ВладимирМСделай простые индексные ключи ... и перепиши все поиски-розыски-выборки. А тут и подвопрос к вопросу: если у таблицы индекс построен с функцией к полю (тот же alltrim), то будет ли столь же быстро использование, например, такого выбора: select * izm=allt(кое-чего) ... когда уберём функцию? Если честно, то я так и не понял этого Рашмора. И, вполне возможно, ошибаюсь, но без функции притормаживать будет. Так думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 23:10 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
bobit ВладимирМСделай простые индексные ключи ... и перепиши все поиски-розыски-выборки. А тут и подвопрос к вопросу: если у таблицы индекс построен с функцией к полю (тот же alltrim), то будет ли столь же быстро использование, например, такого выбора: select * izm=allt(кое-чего) ... когда уберём функцию? Если честно, то я так и не понял этого Рашмора. И, вполне возможно, ошибаюсь, но без функции притормаживать будет. Так думаю. Нет. Не так. У тебя стоит условие поиска izm=allt(кое-чего) Оптимизатор видит, что в левой части стоит имя поля (или функция от полей таблицы). Он сканирует заголовок всех открытых индексных файлов соответствующей таблицы на предмет поиска точно такого же выражения ключа индекса. Если такой индекс найден, то, скорее всего, он и будет использован. Исключением являются случаи когда: Индекс имеет FOR-условие Индекс имеет тип UNIQUE Индекс создан в режиме сортировки (IDXCollate()) отличном от текущего режима сортировки (SET COLLATE) Если выполняется хотя бы одно из этих условий, то такой индекс НЕ используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 23:23 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
То есть select * from polina where allt(izm)=allt(кое-что) into cursor вторая_полина - это правильно для случая iNDEX ON ALLTRIM(izm) tag izm для первой полины с полем izm? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 23:48 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
bobitТо есть select * from polina where allt(izm)=allt(кое-что) into cursor вторая_полина - это правильно для случая iNDEX ON ALLTRIM(izm) tag izm для первой полины с полем izm? Ну, ты и выражаешься Сам хоть понял, что спросил? Настоятельно советую перечитывать свой вопрос в предпросмотре перед отправкой. Еще раз. Если у Вас выражение where allt(izm)=allt(кое-что) И индекс iNDEX ON ALLTRIM(izm) tag izm То, да, этот индекс будет использоваться оптимизатором. Но! Здесь пожидает серьезная "засада". Как я уже писал ранее, FoxPro не поддерживает переменную длину ключа. Т.е. он сам, по собственной инициативе, добавит в выражении индекса концевые пробелы. Как следствие, результат сравнения allt(izm)=allt(кое-что) может дать неожиданные результаты. Ведь не будет происходит вычисление allt(izm), а будет просто сравниваться значение allt(кое-что) со значением индексного ключа. Напоминаю, в значении ключа есть концевые пробелы. Впрочем, в данном конкретном случае это не окажет никакого влияния. Результат будет корректным. Чтобы понять почему, почитайте описание настройки SET ANSI, которая отвечает за правила сравнения символьных строк в выражении Select-SQL. Да, до некоторой степени, судить о том, используются индексы или нет можно через команду SYS(3054). Примерно так: Код: plaintext 1. 2. 3. В основном окне FoxPro будет отображена информация об использованных индексах и уровне оптимизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 00:56 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
Hi Redrik! > Как минимум - раз уж всё так тупо каждый раз индексируется, то перед > USE сделай ERASE индексному файлу! ERASE низя - тогда не откроется dbf - надо DELETE TAG ALL - но это чисто теоретически - ибо практически ПЕРЕИНДЕКСИРОВАТЬ ПРИ КАЖДОМ ЗАПУСКЕ - это бессмысленно. Если такое кривое железо что летят индексы - так надо железо лечить, а не извращения в программе делать. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 02:28 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov ERASE низя - тогда не откроется dbf - надо DELETE TAG ALL Это почему не откроется??? Отлично откроется, если табличку "освободить"! REMOVE табличку, ERASE индекс, ADD и USE табличку... И индексируем сколько влезет! DELETE TAG не сделаешь без USE, a USE при убитом индексе не сработает! Igor Korolyovно это чисто теоретически - ибо практически ПЕРЕИНДЕКСИРОВАТЬ ПРИ КАЖДОМ ЗАПУСКЕ - это бессмысленно. Совершенно верно! Но иногда... ;-) Igor KorolyovЕсли такое кривое железо что летят индексы - так надо железо лечить, а не извращения в программе делать. Хм... А вот бывают клиенты, для которых "лечение" железа - непосильная задача! Ну и что с такими делать? Например, стоИт "несчастье", чтоб платежки печатать и перезапускается само по себе в произвольный момент времени... Ну и пусть индексируется при каждом запуске! ;-) И тут без ERASE никак нельзя! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 11:11 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
Hi Redrik! > Это почему не откроется??? Отлично откроется, если табличку > "освободить"! REMOVE табличку, ERASE индекс, ADD и USE табличку... И > индексируем сколько влезет! А потом починить как-то dbc в котором были записи о этой таблице, вернуть длинные имена полей, триггера, RI, рулесы... В общем совершить 1001 совершенно лишнее действие... Только не надо тут говорить о том что у тебя ничего этого не используется (тем боле что я всё-равно не поверю), и потому тебе так лучше делать - всё-же мы рассматриваем общий случай. > DELETE TAG не сделаешь без USE, a USE при убитом индексе не > сработает! Да, но достать из дистрибутива, или из архива этот cdx (пускай даже "пустой" - т.е. созданный при отсутствии в таблице записей) и подставить его - после чего достаточно лишь REINDEX сделать - заметно проще и эффективнее. > Совершенно верно! Но иногда... ;-) "Иногда" подразумевет "не в main.prg". > Хм... А вот бывают клиенты, для которых "лечение" железа - > непосильная задача! Клиент не способный заплатить пару сотен тугриков за более-менее нормальное железо - это не наш клиент :) Я бы не стал работать за 10$ и даже за 100$ за АРМ. Имеется в виду не "вообще", а решать проблемы КОНКРЕТНОГО пользователя... А если он готов нормально заплатить, то и железо сможет купить которое не "перегружается само по себе". Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:09 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
Igor KorolyovА потом починить как-то dbc в котором были записи о этой таблице, вернуть длинные имена полей, триггера, RI, рулесы... В общем совершить 1001 совершенно лишнее действие... Только не надо тут говорить о том что у тебя ничего этого не используется (тем боле что я всё-равно не поверю), и потому тебе так лучше делать - всё-же мы рассматриваем общий случай. :-) Igor KorolyovДа, но достать из дистрибутива, или из архива этот cdx (пускай даже "пустой" - т.е. созданный при отсутствии в таблице записей) и подставить его - после чего достаточно лишь REINDEX сделать - заметно проще и эффективнее. Совершенно согласен! Лучший способ! ;-) Igor KorolyovКлиент не способный заплатить пару сотен тугриков за более-менее нормальное железо - это не наш клиент :) Я бы не стал работать за 10$ и даже за 100$ за АРМ. Имеется в виду не "вообще", а решать проблемы КОНКРЕТНОГО пользователя... А если он готов нормально заплатить, то и железо сможет купить которое не "перегружается само по себе". Так то оно так... Вряд ли кто-нибудь работает за $100 за АРМ... Но есть же и клиенты типа дом-интернат... Деньги-то, конечно, вещь значительная, но не решающая... Надо от них иногда отвлекаться... ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 19:01 |
|
||
|
Размер индексного файла
|
|||
|---|---|---|---|
|
#18+
Hi Redrik! Если тебе не платят ничего, то ты совершенно в праве делать лишь то, что посчитаешь нужным - IMHO это совершенно логично. И тогда ни о каких "прихотях клиентов" речи вообще не идёт. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 00:00 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32944851&tid=1594702]: |
0ms |
get settings: |
4ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 356ms |

| 0 / 0 |
