|
|
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Ya tak ponimayu chto "UPDATE" bistree rabotaet chem "REPLACE". Tak li eto? Yesli da, toqda pochemu : ******************************************************* use nm123 FOR m.lnI=11 TO 25 lcFieldName = FIELD(m.lnI) update nerd set &lcFieldName = 0 where &lcFieldName = m.lnValue ENDFOR upda nerd set CEM_A = A1+AA2+AA3+AA4+AA5+AA6+AA7+AA8+AA9+AA10,cem_b =bb1+bb2+bb3+bb4+bb5 copy to tur_1u for CEM_A=0.OR.CEM_B=0 use tur_1u ************************************************** v etom primere yesli zamenit updata na replace (ili naoborot) nichevo ne menyaetsa? Ili kak etot kod mojno "uskorit"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 15:52 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
http://www.sql.ru/forum/actualthread.aspx?tid=179805&hl=replace+update ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 17:12 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Hi SDF! > Ya tak ponimayu chto "UPDATE" bistree rabotaet chem "REPLACE". Нет. При равных условиях они работают примерно одинаково. Различия проявляются лишь при "множественной" замене - UPDATE блокирует индивидуально каждую обновляемую запись. а REPLACE блокирует всю таблицу целиком (теоретически это должно дать ему несколько большую производительность - ЕСЛИ НЕТУ КОНКУРЕНТОВ - иначе ему придётся ждать, пока "конкуренты" освободять свои блокировки). Вот что у тебя может замедлять процесс - так это макроподстановки. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 01:35 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Privet Igor. Spasibo za otvet i na ostalnix voprosov toje. U menya v tablitse okolo 500000 zapisey.Na vipolnenie imenno etoy chasti proqrammi idyot okolo 10 sekund. Dumayu chto eto nenormolno. A bez eti makropodstanovki kak mojet bit? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 07:14 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
16 update-ов по таблице на 500 000 записей за 10 секунд - по-моему, это неплохо. Можно ускорить, делая вместо 16-ти только два update и при этом сильно не изменяя код. Где-то так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 08:17 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Privet Urri. Programma konyeshno uskorilas, no ne dal tot rezultat kotoriy mne nujen. Mne nujen nachinaya s 11-vo pole do 25 proverit vse pole i yesli u nix uchastvuet 'lnValue' zamenit vse na '0', no etovo koda ******************* if &lcFieldName = m.lnValue update nerd set &lcFieldName = 0 endif ************************** ne poluchaetsa takoy rezultat. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 08:49 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Потому что в запросе и в коде немного по-разному сравниваются две строки. Help Set Exact Help Set Ansi &c. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 09:59 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Net Urri, vsye taki , pomoemu ot etovo ne zavisit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 11:38 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Ну попробуй вместо if &lcFieldName = m.lnValue явно задать так: if left(&lcFieldName,len(rtrim(m.lnValue))) == rtrim(m.lnValue) (к примеру) ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 11:45 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Hi SDF! Вряд-ли у тебя есть индексы по всем этим полям, а значит UPDATE вынужден просматривать ВСЮ таблицу целиком, от того и скорость такая. возможно в данном случае более эффективно использовать SCAN + группу "условных" REPLACE (обрабатывая по одной записи за раз!) Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2005, 18:25 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Urri16 update-ов по таблице на 500 000 записей за 10 секунд - по-моему, это неплохо. Можно ускорить, делая вместо 16-ти только два update и при этом сильно не изменяя код. Где-то так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Интересная защита у форума, я сюда случайно попал 8))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2006, 01:32 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Извените за вторжение, реально случейно попал, по Фокспро помогу чем смогу, или по БД SQL,ADO,Local BD міло serg_tsn@mail.ru. Помогу чем смогу, Для админов, Защиту постройте неормально, я реально не хакер... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2006, 01:41 |
|
||
|
updade ili replace
|
|||
|---|---|---|---|
|
#18+
Провел несколько тестов, и вот что получилось 1. Код автора топика выполняется ~ 10 сек. Примем эту цифру за эталон. 2. Если согласно этим рекомендациям заменить две макроподстановки на одну Код: plaintext 1. 2. 3. 4. 5. 6. 3. Замена Update - SQL на Relpace (или его аналог в данном случае - Blank Fields) приводит к незначительному замедлению. 4. Если все участвующие поля проиндексировать, то процесс ускоряется в 10 раз ;-) (хотя размер индексного файла превышает размер таблицы ) 5. Все манипуляции со сканированием (с созданием списка полей для обновления или без него) замедляют процесс в 3-4 раза P.S. Тесты проводились на VFP8, таблица расположена локально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2006, 20:35 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33167350&tid=1591295]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 460ms |

| 0 / 0 |
