Re: Почему не используется RASHMORE | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
На сокращенных таблицах, которые были во вложении запрос оптимизируется для таблицы kvart с использованием индекса ADRES. На полной же таблице - не оптимизируется.
Попробовал переиндексировать таблицу STR в VFP9.0. Не дает построить индекс LEFT(p2,AT(" ",p2,IIF(INLIST(ASC(LEFT(LTRIM(p2),1)),48,49,50,51,52,53,54,55,56,57),2,1))-1) ошибка FoxPro 9.0 Error building key for index "name". (Error 2199) Похоже, VFP9 не пропускает индексы с переменной длинной ключа. Только не понятно, почему запрос не оптимизируется именно по таблице kvart, если проблема с индексом по таблице STR. |
Re: Почему не используется RASHMORE | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
те талицы которые были во вложении у kvart - collate MACHINE у Str - collate RUSSIAN - если все привести в порядок - все одинаково работает и в vfp8sp1 и vfp9 beta (релиза нема)
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Почему не используется RASHMORE | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Вадим, прогони в бете
что говорит SYS(3052) и какие временные результаты получаются, у меня при ON - full. а при OFF - none и соответственно время разное. Видимо фича на лицо. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Почему не используется RASHMORE | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Паша, чего-то я тестами с ничего не понял - гоняю - гоняю - самые противоречивые мнения тока в начале добавил строку sys(1104) C RUSSIAN 15,0 0,0 далее гоняем тоже самое 0,0 0,0 c MACHINE 15,0 0,0 Уже успокоился - перезапустил 9-ку (уже раз 10 наверное) тестю с MACHINE 0,0 15,0 (?) - что за фикус ? Была еще опция для Select SQL - толи NoBuffer толи NoCache - еще ее надо проверить Уже времени нет - день заканчивается ------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Почему не используется RASHMORE | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
При SET ANSI ON на маленькой таблице kvart (120 000 записей) оптимизация производится, но результат, естественно, неправильный. На полной же таблице (1 500 000), оптимизация не производится ни при каком значении ANSI. Рад бы выслать, но это 72М только DBF.
|
Re: Почему не используется RASHMORE | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
У меня VERSION VFP 09.00.0000.2412. Надеюсь, это не бэта.
|
Re: Почему не используется RASHMORE | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Цитата: Релиз ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Почему не используется RASHMORE | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Теперь еще одно наблюдение. Копирую из 8.0 таблицы в другую папку.Открываю ее со старым индексом. Запускаю запрос. При SET ANSI ON оптимизация производится. Перед этим сколько не переупаковывал, оптимизация не производилась.
|
Re: Почему не используется RASHMORE | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, Сергей!
Да, похоже в VFP9 он не считает что STR() даёт строку фиксированной ширины Даже STR(..., 10, 0) не удовлетворяет оптимизатор, а вот скажем PADL(STR(), 10) уже оптимизируется Так что оберни всю свою ботву в PADL() - должно помочь P.S. PADL не только "дополняет", он ещё и "режет лишнее" - так что не ошибись с размером ------------------ WBR, Igor |
Re: Почему не используется RASHMORE | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
2PaulWist
Паша - твой пример - вообще-то не правильный - по его запросам никогда ничего не будет найдено. STR(ID) это даже для 1000000 = " 1000000" - т.е. 3 пробела в начале ибо в данном случае неуказанный параметр длины по умолчанию 10 - поэтому для STR(ID)="2" никогда ничего не будет найдено. Пришлось немного поменять код для теста
0,000 0 281,000 100000 Результат для vfp9beta 0,000 0 409,000 100000 с Set EngineBehavior 80 0,000 0 390,000 100000 В обоих случаях sys(3054) выдет одно и тоже Цитата:Так что никаких глюков ни багов ни фич не вижу. Использование SET ANSI все в пределах хелпа Только вот не понятно почему запрос vfp9 медленне чем vfp8 это непонятно ------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
© 2000-2024 Fox Club  |