Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 дикие тормоза при простом Update  [new]
WertAndrey
Member

Откуда: Калининград
Сообщений: 78
Народ, подскажите в чем проблема..
при выполнении данной команды программа задумывается на несколько минут!!!!
"UPDATE PRIVARC SET dat_otm=CTOD('25.06.2007') where RECNO()=687963"
строка формируется программно, сама таблица сетевая
26 июн 07, 07:31    [4313359]     Ответить | Цитировать Сообщить модератору
 Re: дикие тормоза при простом Update  [new]
leaf
Member [заблокирован]

Откуда: Ростов-на-Дону --> Москва
Сообщений: 2661
может кто то работает с таблицей и програмно накладывает блокировки на отдельные строки ?
программа то сетевая
26 июн 07, 08:16    [4313408]     Ответить | Цитировать Сообщить модератору
 Re: дикие тормоза при простом Update  [new]
Al_fa
Member

Откуда: Курган
Сообщений: 42
Потому что такая команда будет тупо перебирать все 687962 , вычисляя на каждой функцию recno(), пока доберется до 687963. Используй в условии ключевое поле по которому создан индекс или перепеши так :
go 687963 in PRIVARC
replace next 1 PRIVARC.dat_otm with CTOD('25.06.2007') in PRIVARC
26 июн 07, 09:09    [4313527]     Ответить | Цитировать Сообщить модератору
 Re: дикие тормоза при простом Update  [new]
Dima T
Member

Откуда:
Сообщений: 15301
попробуй так:
go 687963 in PRIVARC
repl  in PRIVARC dat_otm with CTOD('25.06.2007')
Не рекомендую использовать номер записи как первичный ключ, он может измениться после выполнения команды PACK
26 июн 07, 09:10    [4313532]     Ответить | Цитировать Сообщить модератору
 Re: дикие тормоза при простом Update  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8873
Dima T
Не рекомендую использовать номер записи как первичный ключ, он может измениться после выполнения команды PACK

Ваше заявление верно, но указанный выше способ поиска через GOTO самый быстрый и эффективный из существующих в реляционных базах данных...

Сообщение было отредактировано: 26 июн 07, 12:46
26 июн 07, 12:46    [4314936]     Ответить | Цитировать Сообщить модератору
 Re: дикие тормоза при простом Update  [new]
Dima T
Member

Откуда:
Сообщений: 15301
Sergey Ch
Dima T
Не рекомендую использовать номер записи как первичный ключ, он может измениться после выполнения команды PACK

Ваше заявление верно, но указанный выше способ поиска через GOTO самый быстрый и эффективный из существующих в реляционных базах данных...

Может быть в данном случае этот способ имеет право быть использованным, но как исключение в угоду производительности (ее явно WertAndrey не хватает)
Я предупредил чтобы из исключения правило не делал, т.к. у этого подхода очень серьезные ограничения, а то можно на такие грабли наступить, что мало не покажется.
26 июн 07, 13:49    [4315324]     Ответить | Цитировать Сообщить модератору
 Re: дикие тормоза при простом Update  [new]
WertAndrey
Member

Откуда: Калининград
Сообщений: 78
Всем спасибо!!!
не знал что UPDATE перебирает записи, если указан RECNO() , буду иметь ввиду!!
27 июн 07, 06:53    [4318407]     Ответить | Цитировать Сообщить модератору
 Re: дикие тормоза при простом Update  [new]
kolobok
Member

Откуда: Нижний Новгород
Сообщений: 47
Забавно. А как ты узнал, что RECNO()=687963?
27 июн 07, 08:37    [4318550]     Ответить | Цитировать Сообщить модератору
 Re: дикие тормоза при простом Update  [new]
Станислав С...кий
Guest
kolobok
Забавно. А как ты узнал, что RECNO()=687963?

Как-как... Из browse например... На текущей записи сделал recno() и получил номер...
27 июн 07, 08:48    [4318572]     Ответить | Цитировать Сообщить модератору
 Re: дикие тормоза при простом Update  [new]
Станислав С...кий
Guest
Станислав С...кий
kolobok
Забавно. А как ты узнал, что RECNO()=687963?

Как-как... Из browse например... На текущей записи сделал recno() и получил номер...

Примерно также (в ФОКСЕ: recno() -> в Oracle: rowid) можно отредактировать текущую запись на "БОЛЬШИХ" серверах БД...
27 июн 07, 08:52    [4318577]     Ответить | Цитировать Сообщить модератору
 Re: дикие тормоза при простом Update  [new]
kolobok
Member

Откуда: Нижний Новгород
Сообщений: 47
Я это к тому, почему именно RECNO()=687963? Ты что все 687963 просмотрел, чтобы найти запись, требующую обновления? Может все-таки стоит смотреть в сторону поиска по каким-либо определенным критериям, например, по значениям в поле dat_otm.
27 июн 07, 08:59    [4318591]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить