|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Есть таблица Schet1 и ее копия scc1 выполняю: SELECT kod, ugol FROM scc1 WHERE oper = '007001' AND !EMPTY(ugol) INTO CURSOR v3 время работы = 0 SELECT kod, ugol FROM schet1 WHERE oper = '007001' AND !EMPTY(ugol) INTO CURSOR v1 время работы=25сек. Разница в таблицах - Schet1 входит в dbc, есть триггеры Insert, Update, Delete. Таблица scc1 - свободная. Получена из Schet1 командой Copy to scc1 В обеих есть индекс Oper - key()='Oper' Ориентировочное число записей 5 500 000. Выборка ~85 000. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 13:53 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Создание индекса и выполнение запроса при одинаковом collation ? Что показывает Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 13:58 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
glamis, 1. Команда копирования должна быть такой Код: sql 1.
2. Нужен индекс не только на OPER, но и на !EMPTY(ugol). Код: sql 1.
3. Создание индекса по строке (OPER) и выполнение запроса должны быть при одинаковых Collation. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:05 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Dima T, sys(3054,12) для Schet1: SELECT kod, ugol FROM schet1 WHERE oper = '007001' AND !EMPTY(ugol) INTO CURSOR v1 Using index tag Sql_oper to rushmore optimize table schet1 Rushmore optimization level for table schet1: partial для scc1: SELECT kod, ugol FROM scc1 WHERE oper = '007001' AND !EMPTY(ugol) INTO CURSOR v3 Using index tag Sql_oper to rushmore optimize table scc1 Rushmore optimization level for table scc1: partial ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:06 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Sergey Sizov, Таблицы одинаковы, индексы тоже, а время работы в одном случае 0, в другом -25сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:08 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
glamis, забыл еще про set deleted. Если стоИт в on, то еще нужен индекс Код: sql 1.
И тогда можно будет увидеть Full вместо partial. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:09 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
есть еще подозрение, что в копии записи отсортированы физически. Проверю только вечером. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:11 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Sergey Sizov, есть ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:12 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
glamisSergey Sizov, Таблицы одинаковы, индексы тоже, а время работы в одном случае 0, в другом -25сек.Еще раз - важны не только данные и выражения индексирования, но и Collation при СОЗДАНИИ индекса и при ВЫПОЛНЕНИИ запроса. Вы же индекс на вторую таблицу не скопировали (а могли, командой которую я показал)? Вы же его потОм сделали? Какой collation был непосредственно перед выдачей команды Index on... ? А какой при выполнении вашего запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:13 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
glamisSergey Sizov, естьЧто есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:13 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
glamisDima T, sys(3054,12) для Schet1 ... Разницы никакой, значит дело не в фоксе glamisРазница в таблицах - Schet1 входит в dbc, есть триггеры Insert, Update, Delete. Таблица scc1 - свободная. Получена из Schet1 командой Copy to scc1 В обеих есть индекс Oper - key()='Oper' Ориентировочное число записей 5 500 000. Выборка ~85 000. 1. Триггеры ничем не мешают, т.к. выполняются только при изменении. 2. Если таблицы в сети и Schet1 используется несколькими пользователями, а scc1 только тобой, то после копирования scc1 даже находясь в сети все-равно закэшируется на твоем компе, т.е. по скорости будет как локальная. Недавно эту тему поднимали ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:19 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Sergey Sizovно и Collation при СОЗДАНИИ индекса и при ВЫПОЛНЕНИИ запроса. ИМХО Collation одинаковый, иначе рашмор просто не стал бы индекс использовать 21289919 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:21 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Dima TSergey Sizovно и Collation при СОЗДАНИИ индекса и при ВЫПОЛНЕНИИ запроса. ИМХО Collation одинаковый, иначе рашмор просто не стал бы индекс использовать 21289919 Это справедливо для самой последней версии фокса. В предыдущих сервис паках было разное. В любом случае предложенные мной индексы всяко не помешают. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:26 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Sergey Sizov, Индекс Delete() ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:44 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
glamisSergey Sizov, Индекс Delete()Однако, он не используется. Он точно Binary? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:48 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Sergey Sizov, set('collate') = MACHINE cp Schet1 1251, cp ssc1 1251 fox Visual FoxPro 09.00.0000.5815 for Windows Кроме того: Select kod,ugol from Schet1 where oper = '007001' into cursor v4 0сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:54 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Sergey SizovglamisSergey Sizov, Индекс Delete()Однако, он не используется. Он точно Binary? Set delete не включено. Эти примеры я выполняю на одной машине в commande, последовательно друг за другом. Среда fox одинакова. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:59 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
glamisfox Visual FoxPro 09.00.0000.5815 for WindowsНе самый последний. Обязательно обновить.[/quot] Кроме того: Select kod,ugol from Schet1 where oper = '007001' into cursor v4 0сек.[/quot]Ну так я ж не просто так про индекс по !Empty(ugol) писал. Как раз его отсутствие для Schet1 и показывает разницу в быстродействии для Schet1. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:02 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
glamisSergey Sizovпропущено... Однако, он не используется. Он точно Binary? Set delete не включено. Эти примеры я выполняю на одной машине в commande, последовательно друг за другом. Среда fox одинакова.Отлично. Теперь надо добиться такого: Select kod,ugol from Schet1 where oper = '007001' and !Empty(ugol) Using index tag Sql_oper to rushmore optimize intermediate result Using index tag E_ugol to rushmore optimize intermediate result Rushmore optimization level for intermediate result: full ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:10 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Sergey Sizov, Но из scc1 эта же выборка при той же структуре, с теми же индексами, с теми же данными копируется МГНОВЕННО. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:23 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
glamisSergey Sizov, Но из scc1 эта же выборка при той же структуре, с теми же индексами, с теми же данными копируется МГНОВЕННО.Она может быть закэширована, она/ее индексы могут лежать в более "удобном" месте диска и т.д. Про одинаковые индексы можно говорить только при копировании этой таблицы вместе с индексами. Вы собираетесь лечить пациента гаданиями? Или таки возьмёте на вооружение технические средства и пойдёте искать где собака порылась? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:28 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
glamisКроме того: Select kod,ugol from Schet1 where oper = '007001' into cursor v4 0сек. Это очень странно. Не могу придумать ни одного объяснения. Если тут же после выполнить Код: sql 1.
точно тормозит? Может проблему уже нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:31 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Sergey SizovТеперь надо добиться такого: Select kod,ugol from Schet1 where oper = '007001' and !Empty(ugol) Using index tag Sql_oper to rushmore optimize intermediate result Using index tag E_ugol to rushmore optimize intermediate result Rushmore optimization level for intermediate result: full ИМХО лучше не надо. Фокс все-равно возьмет какой-то один индекс в качестве основного и будет сначала выбирать по нему. Если этим индексом окажется E_ugol, то будет тормоз. Если уж добиваться "full", то индексом по oper+ugol PS "full" не означает что самый быстрый способ выбран. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:41 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Dima TSergey SizovТеперь надо добиться такого: пропущено... ИМХО лучше не надо. Фокс все-равно возьмет какой-то один индекс в качестве основного и будет сначала выбирать по нему. Если этим индексом окажется E_ugol, то будет тормоз. Если уж добиваться "full", то индексом по oper+ugol PS "full" не означает что самый быстрый способ выбран.Сударь, вы думаете я это в текстовом редакторе написал? Вам показать код, который выводит сие сообщение? Извольте. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Потом расскажете про использование только одного индекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:47 |
|
Почему Select медленно работает?
|
|||
---|---|---|---|
#18+
Sergey Sizov, Мне теперь для каждой выборки строить свои индексы? В таблице около 30 полей и что, по каждому строить индекс? Насчет кеширования - только что сбросил таблицу по сетке на другой ресурс, с другим именем и сделал выборку в другой сессии fox - МГНОВЕННО. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:47 |
|
|
start [/forum/topic.php?fid=41&msg=39621193&tid=1581805]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 255ms |
total: | 387ms |
0 / 0 |