Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос / 12 сообщений из 12, страница 1 из 1
28.05.2004, 15:17
    #32539056
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Сколько должен выполняться такой запрос???
tab1 - 96000 записей
tab2 - 900 записей
tab3 - 160000 записей
tab1.kod1 - индекное (I)
tab2.kod2 - индекное (I)
tab3.kod1 - индекное (I)
tab3.kod2 - индекное (I)
tab3.kod3 - индекное (C[50])

Код: plaintext
1.
2.
3.
   sele tab3.*, tab1.kod3; tab1.naim as naim1, tab2.naim as naim2 
   from tab1, tab2, tab3 
   where tab1.kod1 = tab2.kod2 and tab2.kod2 = tab3.kod2 into dbf tab4;
   order by tab1.kod3

Этот запрос выполняется около 10 сек...
В результате 160000 записей... не долго ли... да еще и по индексным полям
Если я с других таблиц tab1, tab2, вытягиваю только имена...
...
Рейтинг: 0 / 0
28.05.2004, 15:19
    #32539064
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Опечатка в селекте правильно...
Код: plaintext
1.
2.
3.
   sele tab3.*, tab1.kod3; tab1.naim as naim1, tab2.naim as naim2 
   from tab1, tab2, tab3 
   where tab1.kod1 = tab3.kod1 and tab2.kod2 = tab3.kod2 into dbf tab4;
   order by tab1.kod3
...
Рейтинг: 0 / 0
28.05.2004, 15:36
    #32539114
malec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Попробуй вместо
where tab1.kod1 = tab2.kod2 and tab2.kod2 = tab3.kod2

JOIN .....
...
Рейтинг: 0 / 0
28.05.2004, 16:07
    #32539204
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Ну, ты спросил! Скорость выполнения запроса зависит не только от факта оптимизации (проверяется по SYS(3054))

-) Сколько в твоих таблицах записей помеченных как удаленные?
-) Какова на момент выполнения запроса настройка SET DELETED
-) Какова на момент выполнения запроса настройка SET COLLATE и какое значение IDXCollate() для каждого из индексов
-) На момент выполнения запроса были ли уже открыты таблицы
-) На момент выполнения запроса было ли перемещение по записям таблиц-источников.
-) Сколько полей в таблице tab3.*, точнее, какой размер (в байтах) получается у итоговой таблицы
...
Рейтинг: 0 / 0
28.05.2004, 16:26
    #32539265
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
-) Сколько в твоих таблицах записей помеченных как удаленные?
-) Какова на момент выполнения запроса настройка SET DELETED
-) Какова на момент выполнения запроса настройка SET COLLATE и какое значение IDXCollate() для каждого из индексов
-) На момент выполнения запроса были ли уже открыты таблицы
-) На момент выполнения запроса было ли перемещение по записям таблиц-источников.
-) Сколько полей в таблице tab3.*, точнее, какой размер (в байтах) получается у итоговой таблицы


SET DELETED ON
SET COLLATE - я не ставлю...
IDXCollate() - для всех машина стоит
таблицы открыты
по ним не бегали
итоговый файл 50 Метров
...
Рейтинг: 0 / 0
28.05.2004, 16:39
    #32539304
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
А если все-таки ответить на вопросы?

SET DELETED ON

так сколько (какой процент) записей помеченных как удаленные? Ведь их еще надо отсечь от результата

SET COLLATE - я не ставлю...
IDXCollate() - для всех машина стоит

Так стоит-то что?

итоговый файл 50 Метров

Считаешь, что 50 М должны создаваться быстрее, чем за 10 секунд? Так попробуй сделать цикл вроде

Код: plaintext
1.
2.
3.
4.
CREATE TABLE test (f1 C( 200 ), f2 C( 200 ), f3 C( 200 ), f4 C( 200 ), f5 C( 200 ))
* Т.е. одна строка примерно 1К
FOR i= 1  TO  50000 
INSERT INTO test (f1,f2,f3,f4,f5) VALUES (space( 200 ),space( 200 ),space( 200 ),space( 200 ),space( 200 ))
ENDFOR

Это фактически только голое создание таблицы объемом около 50М без учета времени обработки условий и пр.
...
Рейтинг: 0 / 0
30.05.2004, 00:47
    #32539940
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Ради интереса... Сделал такой цикл, добавив в начало и в конец "CLOSE ALL", чтоб по-честному ;-) Десять запусков - среднее время 1.25 сек. Компьютер, правда, хорош...
...
Рейтинг: 0 / 0
31.05.2004, 12:19
    #32540787
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Эт круто...
Единственная проблема запрос от этого быстрее работать не стал...
...
Рейтинг: 0 / 0
31.05.2004, 13:05
    #32540848
VadimS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
попробуй так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 select tab3.*, tab1.kod3; tab1.naim as naim1, tab2.naim as naim2 
  into dbf tab4
   from tab3
    Inner join  tab2
     On tab2.kod2 = tab3.kod2
    Inner join tab1
     On tab2.kod2=tab1.kod1
    Order by tab1.kod3
  
и если tab1.kod3 будет проиндексированно, то Order by будет быстрее отрабатывать.
Не знаю как в VFP, но в Microsoft Server работает быстрее
...
Рейтинг: 0 / 0
31.05.2004, 13:34
    #32540924
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Ну, поскольку ты так и не отвечаешь на заданные вопросы, то отправляю тебя читать статью

http://www.foxclub.ru/kb/index.php?sid=27700&aktion=artikel&rubrik=004&id=57&lang=ru

Там есть, кое что, на предмет использования индексов и как влияет то, о чем я спрашивал (но о чем ты так и не ответил) на скорость выборки.
...
Рейтинг: 0 / 0
31.05.2004, 13:45
    #32540943
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
ВладимирМ:

Просто я сегодня мертвый...
Башка просто не соображает...
...
Рейтинг: 0 / 0
31.05.2004, 13:49
    #32540957
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
VadimS:
Эт запрос еще дольше выполняется...
Я уже пробовал...

ВладимирМ:

Удаленных записей нет...

индексы:
type = regular
collate = machine
у всех...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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