powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как уменьшить трафик при работе в сети?
19 сообщений из 19, страница 1 из 1
Как уменьшить трафик при работе в сети?
    #37150278
Гость_17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема в следущем:
БД Foxpro лежит в сети, при выполнении запросов с клиентской машины происходит увеличение трафика(как будто копируется вся таблица для этого запроса на клиентскую машину, хотя результат запроса небольшой по объему).

Каким способом можно уменьшить трафик?
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150291
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Целиком копируется если нет необходимых для оптимизации индексов.
Сделай sys(3054, 2), выполни запрос и смотри чего пишет.
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150312
Гость_17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Сделали запрос по полю с индексом, и SYS(3054,2) выдал
Rushmore optimization level for table dogovor: none
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150352
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажите ваше выражение индекса.
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150363
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи сам запрос
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150407
Гость_17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Вот даже такой запрос занимает 25Мб трафика

SELECT num_dog;
FROM Z:\dogovor ;
WHERE YEAR(date_dog)=year(DATE())
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150425
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость_17Dima T,

Вот даже такой запрос занимает 25Мб трафика

SELECT num_dog;
FROM Z:\dogovor ;
WHERE YEAR(date_dog)=year(DATE())Прелестно! :) А индекс, даже если и есть, наверняка по полю date_dog, а отнюдь не по выражению от этого поля, не так ли?
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150432
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость_17WHERE YEAR(date_dog)=year(DATE())
Должен быть индекс по date_dog
Код: plaintext
index on date_dog tag date_dog
но функцию YEAR() оптимизатор не понимает, поэтому надо ее убрать чтобы индекс заработал.
Замени условие на BETWEEN
Код: plaintext
WHERE date_dog between date(year(DATE()),  1 ,  1 ) and date(year(DATE()),  12 ,  31 )
или для текущего года
Код: plaintext
WHERE date_dog >= date(year(DATE()),  1 ,  1 )
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150439
Гость_17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, AndreTm

Индекс по DATE_DOG есть, сейчас попробую изменить условие
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150448
Гость_17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey SizovГость_17Dima T,

Вот даже такой запрос занимает 25Мб трафика

SELECT num_dog;
FROM Z:\dogovor ;
WHERE YEAR(date_dog)=year(DATE())Прелестно! :) А индекс, даже если и есть, наверняка по полю date_dog, а отнюдь не по выражению от этого поля, не так ли?




Да, только по полю
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150453
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме того, year(date()), date(year(date(... закинуть в переменные и использовать в запросе именно их
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150496
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость_17Sergey Sizovпропущено...
Прелестно! :) А индекс, даже если и есть, наверняка по полю date_dog, а отнюдь не по выражению от этого поля, не так ли?
Да, только по полюЧто делать в таком случае Вам Dima T написал.
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150617
Гость_17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TГость_17WHERE YEAR(date_dog)=year(DATE())
Должен быть индекс по date_dog
Код: plaintext
index on date_dog tag date_dog
но функцию YEAR() оптимизатор не понимает, поэтому надо ее убрать чтобы индекс заработал.
Замени условие на BETWEEN
Код: plaintext
WHERE date_dog between date(year(DATE()),  1 ,  1 ) and date(year(DATE()),  12 ,  31 )
или для текущего года
Код: plaintext
WHERE date_dog >= date(year(DATE()),  1 ,  1 )


AndreTMКроме того, year(date()), date(year(date(... закинуть в переменные и использовать в запросе именно их


Спасибо всем, нормально отработало всеми указанными выше способами!
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150622
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость_17Спасибо всем, нормально отработало всеми указанными выше способами!

старайтесь функции не использовать в условии ограничения запроса
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150623
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMКроме того, year(date()), date(year(date(... закинуть в переменные и использовать в запросе именно ихС этого будет профит в скорости?
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37150641
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirAndreTMКроме того, year(date()), date(year(date(... закинуть в переменные и использовать в запросе именно ихС этого будет профит в скорости?

для фокспро в данном случае возможно нет,
но если так писать в транзакте,
то коллеги отобьют руки - и будут правы.
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37151624
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть "типа правильно" будет примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
***
select dogovor
index on date_dog tag date_dog
***
private CurrentYearFirstDate,CurrentYearLastDate
CurrentYearFirstDate=date(year(DATE()),  1 ,  1 )
CurrentYearLastDate=date(year(DATE()),  12 ,  31 )
***
SELECT a.num_dog FROM z:\dogovor a WHERE a.date_dog BETWEEN m.CurrentYearFirstDate AND m.CurrentYearLastDate
***
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37151797
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMТо есть "типа правильно" будет примерно так:
Код: plaintext
1.
private CurrentYearFirstDate,CurrentYearLastDate

Тут LOCAL надо бы, а не PRIVATE.
...
Рейтинг: 0 / 0
Как уменьшить трафик при работе в сети?
    #37151803
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там же написано "ТИПА"
LOCAL или PRIVATE - на скорость выполнения запроса не повлияет, а вот мозги разработчика направит в нужное русло...
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как уменьшить трафик при работе в сети?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]