Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
производительность (как всегда о том же)
|
|||
|---|---|---|---|
|
#18+
Здесь много полезного накопилось. разной свежести конечно... предлагаю всем проверить старые "фичи" на свежих кориях каше. Я начну: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2011, 04:14 |
|
||
|
производительность (как всегда о том же)
|
|||
|---|---|---|---|
|
#18+
MY_View содержит данные из my_table. My_table содержит поле "Status", возможные значения от 0 до 5, поле будет индексировано. Новые записи имеют Status = 0, когда полностью обработаны Status = 5. Обработаные записи никогда не удаляются, 98% записей имеют статус = 5. После настройки my_table, MY_view стала тормозить , но не всегда. CEH Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. В заключение: 1.Точная формула для определения наиболее эффективного плана запроса неясна. Selectivity, кажется, работает с нормально распределеными данными. (normal distribution). 2. В таблицах типа my_table исключите Selectivity и Extent Size в Property и Storage. Пока лучшим решением является использование %INORDER. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2011, 04:21 |
|
||
|
производительность (как всегда о том же)
|
|||
|---|---|---|---|
|
#18+
Текст не читал, многа букав Суть в том, что формально селективность по полю статус плохая, а на самом деле хорошая? И каше этого не понимает, так как селективность ставится на поле целиком, и план формируется на запрос без конкретных значений. Решения - %IgnoreIndices, конструкции типа select * from (select * table) Можно в хранении руками селективность поправить, но это не сильно хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2011, 06:49 |
|
||
|
производительность (как всегда о том же)
|
|||
|---|---|---|---|
|
#18+
Вот ещё -- иногда простейшее изменение в SQL может дать ощутимые результаты. UPPER? LOWER?Dynamic Queries - prepare and execute only: Test 1.1: 2 records retrieved in 3.200526 sec. SELECT TOP 1000 * FROM BillingJournal WHERE %ALPHAUP(Invoice_Number) LIKE '%150477%' Test 1.2: 2 records retrieved in 3.185824 sec. SELECT TOP 1000 * FROM BillingJournal WHERE %ALPHAUP(Invoice_Number) [ '150477' Test 1.3: 2 records retrieved in 2.82 sec. SELECT TOP 1000 * FROM BillingJournal WHERE $Find(%ALPHAUP(Invoice_Number),'150477')>0 Test 2.1: 2 records retrieved in 3.264058 sec. SELECT TOP 1000 * FROM BillingJournal WHERE UPPER(Invoice_Number) LIKE '%150477%' Test 2.2: 2 records retrieved in 2.865078 sec. SELECT TOP 1000 * FROM BillingJournal WHERE UPPER(Invoice_Number) [ '150477' Test 2.3: 2 records retrieved in 2.550148 sec. SELECT TOP 1000 * FROM BillingJournal WHERE $Find(UPPER(Invoice_Number),'150477')>0 Test 3.1: 2 records retrieved in 2.645666 sec. SELECT TOP 1000 * FROM BillingJournal WHERE %UPPER(Invoice_Number) LIKE '%150477%' Test 3.2: 2 records retrieved in 2.770384 sec. SELECT TOP 1000 * FROM BillingJournal WHERE %UPPER(Invoice_Number) [ '150477' Test 3.3: 2 records retrieved in 2.602717 sec. SELECT TOP 1000 * FROM BillingJournal WHERE $Find(%UPPER(Invoice_Number),'150477')>0 Test 4.1: 2 records retrieved in .471094 sec. SELECT TOP 1000 * FROM BillingJournal WHERE UCASE(Invoice_Number) LIKE '%150477%' Test 4.2: 2 records retrieved in .506032 sec. SELECT TOP 1000 * FROM BillingJournal WHERE UCASE(Invoice_Number) [ '150477' Test 4.3: 2 records retrieved in .480911 sec. SELECT TOP 1000 * FROM BillingJournal WHERE $Find(UCASE(Invoice_Number),'150477')>0 Test 5.1: 2 records retrieved in .829205 sec. SELECT TOP 1000 * FROM BillingJournal WHERE %SQLUPPER(Invoice_Number) LIKE '%150477%' Test 5.2: 2 records retrieved in .286431 sec. SELECT TOP 1000 * FROM BillingJournal WHERE %SQLUPPER(Invoice_Number) [ '150477' Test 5.3: 2 records retrieved in .474841 sec. SELECT TOP 1000 * FROM BillingJournal WHERE $Find(%SQLUPPER(Invoice_Number),'150477')>0 Test 6.1: 2 records retrieved in .422882 sec. SELECT TOP 1000 * FROM BillingJournal WHERE LOWER(Invoice_Number) LIKE '%150477%' Test 6.2: 2 records retrieved in .446032 sec. SELECT TOP 1000 * FROM BillingJournal WHERE LOWER(Invoice_Number) [ '150477' Test 6.3: 2 records retrieved in .37884 sec. SELECT TOP 1000 * FROM BillingJournal WHERE $Find(LOWER(Invoice_Number),'150477')>0 Embedded SQL (e.g. &slq(Select * from Billing Journal...) execute to get cursor to the first record: LOWER & LIKE: 0.279768 sec. %SQLUPPER & LIKE: 0.400521 sec. UPPER & LIKE: 1.00274 sec. UCASE & LIKE: 0.308962 sec. Глупо как-то выходит. Документация клянётся %SQLUPPER рулит, а получается не совсем так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 04:27 |
|
||
|
производительность (как всегда о том же)
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.1. Текст не читал, многа букав 2. Решения - %IgnoreIndices, конструкции типа select * from (select * table) 3. Можно в хранении руками селективность поправить, но это не сильно хорошо. 1. ? 2. плохое решение потому что я хочу пользоваться индексами но не в предлагаемом порядке и без JOIN ооочень долго 3. многа букв как раз описывают такой эксперимент. То что это не желательно я согласен. Поэтому решил пользоваться %INORDER и создал 2 запроса: (1) для Status in (0,1,2,3,4) (2) Status=5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 04:49 |
|
||
|
производительность (как всегда о том же)
|
|||
|---|---|---|---|
|
#18+
CEH , Пожалуйста, приведите текст класса и код генерации данных для точного воспроизведения. Например: Class del.b Extends %Persistent { Index in On n; Index in1 On (n As Exact); Index in2 On (n As SqlUpper(5)); Property n As %String; ClassMethod Fill(n As %Integer = 1000000) { do ..%KillExtent() set ^del.bD=n for i=1:1:n set ^del.bD(i)=$lb("",$r(n)+1) do ..%BuildIndices(,1) do $system.SQL.TuneTable("del.b",1) } } Время выполнения в Портале для миллиона строк (возвращается 1000 записей): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Вам нужен поиск с учётом регистра или без? От сортировки по-умолчанию и типа индекса будет зависеть скорость тех или иных запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 18:56 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=37089660&tid=1557816]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
140ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 467ms |

| 0 / 0 |
