|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам1. Для чего "разбираешь", цель какая ? 2. Автор в пределах досягаемости ? 1. Руководитель поставил задачу 2. Да ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 10:54 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Gallemar> 1. Руководитель поставил задачу > 2. Да 1. Какую задачу-то? Выводить в консоль 800 записей? 2. Дык заряди его, пусть облагораживает свой г-код. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 10:56 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамGallemar> 1. Руководитель поставил задачу > 2. Да 1. Какую задачу-то? Выводить в консоль 800 записей? 2. Дык заряди его, пусть облагораживает свой г-код. 1. Разобраться, что влияет на вывод записей по порциям 2. Не могу, это мой руководитель :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 11:06 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Gallemar, ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 11:16 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Gallemar, попробуй добавить в connectionString Код: plaintext
Код: c# 1. 2. 3.
по умолчанию там как раз 200 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 11:27 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Gallemar, если что в FbConnectionStringBuilder это определено так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 11:30 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Gallemar, впрочем если бы запрос был быстрым ты бы и не заметил паузы. Просто оригинальный запрос долго извлекает 200 записей, а твой второй тестовый запрос быстро. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 11:37 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Симонов Денис, меня с самого начала резанули слова Gallemar, что "таких параметров нет", и ссылка на какой-то пример на сайте. Мне как-то надо было искать параметры транзакций в этом .net, я его исходники смотрел, там параметров хренова туча. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 11:38 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Gallemar, я бы на твоём месте не этот параметр крутил, а оптимизировал запрос, потому что для нормально написанного запроса ты этой паузы не заметишь. По самому запросу: 1. все левые джойны собери в конце запросы, т.е. ниже внутренних 2. помедитируй над заменой in Короче сделай сначала чтобы в IBE запрос пулей отрабатывал, а потом только в свой код его пиши. Возможно и fetchsize трогать не придётся ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 11:55 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Денис, большое спасибо за помощь. p.s. передал нашим программистам, что они лохи и делфисты их вчистую уделали :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 12:01 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
kdvСимонов Денис, меня с самого начала резанули слова Gallemar, что "таких параметров нет", и ссылка на какой-то пример на сайте. Мне как-то надо было искать параметры транзакций в этом .net, я его исходники смотрел, там параметров хренова туча. Я смотрел свойства FbConnection и FbDataReader, fetch size там не увидел, в исходники не пришло в голову лазить ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 12:16 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Симонов ДенисПо самому запросу: 1. все левые джойны собери в конце запросы, т.е. ниже внутренних 2. помедитируй над заменой in Переделал, получил План PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT)) PLAN JOIN (JOIN (JOIN (PRK INDEX (PRICEKIND_IDX2), PR INDEX (DISCCARD_IDX_PRICEKIND), OST INDEX (PK_OSTDAILY)), CARDS INDEX (PK_CARDSCLA)), MES INDEX (PK_MESURIMENT)) ------ Информация о производительности ------ Время подготовки запроса = 32ms Время выполнения запроса = 1s 359ms Среднее время на получение одной записи = 1,70 ms Current memory = 20 959 080 Max memory = 28 795 752 Memory buffers = 1 024 Reads from disk to cache = 10 150 Writes from cache to disk = 26 Чтений из кэша = 470 488 План PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT)) PLAN JOIN (JOIN (JOIN (PRK INDEX (PRICEKIND_IDX2), PR INDEX (DISCCARD_IDX_PRICEKIND), OST INDEX (PK_OSTDAILY)), CARDS INDEX (PK_CARDSCLA)), MES INDEX (PK_MESURIMENT)) ------ Информация о производительности ------ Время подготовки запроса = 32ms Время выполнения запроса = 1s 359ms Среднее время на получение одной записи = 1,70 ms Current memory = 20 959 080 Max memory = 28 795 752 Memory buffers = 1 024 Reads from disk to cache = 10 150 Writes from cache to disk = 26 Чтений из кэша = 470 488 А вот от in я не избавлюсь, увы ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 12:21 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Упс План PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT)) PLAN JOIN (JOIN (JOIN (PRK INDEX (PRICEKIND_IDX2), PR INDEX (DISCCARD_IDX_PRICEKIND), OST INDEX (PK_OSTDAILY)), CARDS INDEX (PK_CARDSCLA)), MES INDEX (PK_MESURIMENT)) ------ Информация о производительности ------ Время подготовки запроса = 32ms Время выполнения запроса = 1s 359ms Среднее время на получение одной записи = 1,70 ms Current memory = 20 959 080 Max memory = 28 795 752 Memory buffers = 1 024 Reads from disk to cache = 10 150 Writes from cache to disk = 26 Чтений из кэша = 470 488 против План PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT)) PLAN JOIN (JOIN (JOIN (JOIN (OST INDEX (PK_OSTDAILY), CARDS INDEX (PK_CARDSCLA)), PR INDEX (PK_DISCCARD)), PRK INDEX (PK_PRICEKIND)), MES INDEX (PK_MESURIMENT)) ------ Информация о производительности ------ Время подготовки запроса = 31ms Время выполнения запроса = 8s 969ms Среднее время на получение одной записи = 11,21 ms Current memory = 21 722 104 Max memory = 28 795 752 Memory buffers = 1 024 Reads from disk to cache = 142 144 Writes from cache to disk = 0 Чтений из кэша = 3 110 100 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 12:22 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
ИМХО, классный пример ДЕ на оптимизацию. Хотя надо ещё запросы сравнить, не выкинул ли он оттуда чего лишнего. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 12:30 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамИМХО, классный пример ДЕ на оптимизацию. Хотя надо ещё запросы сравнить, не выкинул ли он оттуда чего лишнего. Было select OST.ARTICUL, CARDS.NAME, OST.QUANTITY, PR.PRICE_RUB from OSTDAILY OST left join CARDSCLA CARDS on OST.ARTICUL = CARDS.ARTICUL join DISCCARD PR on PR.ARTICUL = OST.ARTICUL join PRICEKIND PRK on PRK.ID_PRICEKIND = PR.PRICE_KIND left join MESURIMENT MES on CARDS.MESURIMENT = MES.ID_MESURIMENT where OST.PLACE_INDEX in (select CLIENT_INDEX from TH_CLASSBYCLIENT where TH_CLASSIF = 69) and OST.OST_DATE = 'today' and FILIALINDEX_PRICEKIND = 69 and KIND = 0 rows 800 Statement Plan -------------- PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT)) PLAN JOIN (JOIN (JOIN (JOIN (OST INDEX (PK_OSTDAILY), CARDS INDEX (PK_CARDSCLA)), PR INDEX (PK_DISCCARD)), PRK INDEX (PK_PRICEKIND)), MES INDEX (PK_MESURIMENT)) стало select OST.ARTICUL, CARDS.NAME, OST.QUANTITY, PR.PRICE_RUB from OSTDAILY OST join DISCCARD PR on PR.ARTICUL = OST.ARTICUL join PRICEKIND PRK on PRK.ID_PRICEKIND = PR.PRICE_KIND left join CARDSCLA CARDS on OST.ARTICUL = CARDS.ARTICUL left join MESURIMENT MES on CARDS.MESURIMENT = MES.ID_MESURIMENT where OST.PLACE_INDEX in (select CLIENT_INDEX from TH_CLASSBYCLIENT where TH_CLASSIF = 69) and OST.OST_DATE = 'today' and FILIALINDEX_PRICEKIND = 69 and KIND = 0 rows 800 Statement Plan -------------- PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT)) PLAN JOIN (JOIN (JOIN (PRK INDEX (PRICEKIND_IDX2), PR INDEX (DISCCARD_IDX_PRICEKIND), OST INDEX (PK_OSTDAILY)), CARDS INDEX (PK_CARDSCLA)), MES INDEX (PK_MESURIMENT)) FB 2.5.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 12:34 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
GallemarЯ смотрел свойства FbConnection и FbDataReader, fetch size там не увидел, в исходники не пришло в голову лазить а вот мне пришло. Потратил целых 2 минуты. Гаджимурадов Рустам ИМХО, классный пример ДЕ на оптимизацию. он знает. С перестановкой LEFT JOIN это старый косяк оптимизатора. Только вчера этот вопрос возникал. В запросах то ладно, их и переделать быстро можно, а вот когда делаешь JOIN с вьюхой в которой есть LEFT JOIN будет больно. Первоначально его планировали исправить к выходу 3.0, но то ли не успели, то ли не получилось. Сам ДЕ говорит что исправить не тривиально. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 12:54 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Симонов Денис> С перестановкой LEFT JOIN это старый косяк оптимизатора. Я знаю, но в 8 раз - это уметь надо. > Сам ДЕ говорит что исправить не тривиально. Ну на нет и суда нет, дело хозяйское. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 13:17 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Симонов ДенисGallemarЯ смотрел свойства FbConnection и FbDataReader, fetch size там не увидел, в исходники не пришло в голову лазить а вот мне пришло. Потратил целых 2 минуты. Они на SF? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 13:26 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 13:28 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
Симонов ДенисGallemar, я качал отсюда https://www.firebirdsql.org/en/additional-downloads/ Понятно,я просто NuGet ставил, так что дальше не лазил ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 14:02 |
|
Вопрос по запросу через Firebird ADO.NET Data Provider
|
|||
---|---|---|---|
#18+
GallemarПонятно,я просто NuGet ставил, так что дальше не лазил документации нет, как узнать про "спецпараметры" и прочее? Только глянуть в исходники. Вообще стыдобА, конечно, чувак за столько лет не сподобился минимальную доку написать, ограничился 6ю убогими примерами. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2018, 16:19 |
|
|
start [/forum/topic.php?fid=40&gotonew=1&tid=1561094]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
137ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 300ms |
total: | 555ms |
0 / 0 |