|
|
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
kdvС другой стороны это адский угар, в том смысле что руки опережают мозг, и совершенно явно нужно как-то притормозить.блин, ну покаялся я ужо перед Владом (в личке), чего еще-то ? нехрена было вообще разговор про эти экстенты тут заводить... :-) kdvС третьей стороны, я же видел Таблоида очно (Павел, извини, что о тебе в третьем лице), и "невротиком" я бы его не назвал.дык я вообще не волнуюсь ни об чём... давно как бэ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 21:50:30 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидElapsed time= 49.75 sec Buffers = 524288 Reads = 1430580 Disk transfer rate, mb/s = (Reads * PageSize)/1024/1024/ElapsedTime если я не ошибся, и у тебя размер страницы 16к, то тогда скорость будет 447 мегабайт в секунду. Тебе мало? Это скорость raid 1 или raid 10 с SSD, или хорошего raid 10 на hdd. Если 8 к, то тогда 223 мегабайта в секунду. Это скорость среднего RAID 10 на hdd. Сделай select count (*) from td и сравни с твоими селект каунтами и like. p.s. все познается в сравнении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 21:54:56 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
Таблоид, заодно учитывай, что при повторном выполнении запросов будет работать кэш ОС (в плане опережающего чтения, или prefetch, или как оно там). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 21:57:35 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
kdvТаблоидElapsed time= 49.75 sec Buffers = 524288 Reads = 1430580 Disk transfer rate, mb/s = (Reads * PageSize)/1024/1024/ElapsedTime если я не ошибся, и у тебя размер страницы 16к, то тогда скорость будет 447 мегабайт в секунду. Тебе мало? Это скорость raid 1 или raid 10 с SSD, или хорошего raid 10 на hdd.а причём тут конкретные цифирки про скорость в ДАННОМ замере ? я сравниваю LIKE для строк *с* и *без* завершающих пробелов, причём шаблон и сама строка такова, что поиск по LIKE должен завершаться немедленно на каждой итерации: там ПЕРВЫМ символом идёт как раз тот, что в шаблоне. И погляди, какое различие лезет. Чем объяснишь ? kdvЕсли 8 к, то тогда 223 мегабайта в секунду. Это скорость среднего RAID 10 на hdd. Сделай select count (*) from td и сравни с твоими селект каунтами и like. p.s. все познается в сравнении.ну сделал: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:01:31 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
kdvпри повторном выполнении запросов будет работать кэш ОС (в плане опережающего чтения, или prefetch, или как оно там).я по ТРИ раза делал каждый запрос. Статистика приведена в каждом случае для третьего прогона. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:02:10 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидЧто мне с этого каунта, когда он саму строку не вычитывает ? он же только заголовок записи читает там. с этого каунта ты понимаешь скорость голой вычитки записей/версий, и можешь сравнить ее с "накладными расходами" на сравнение like, not like и т.д. Ну ей-богу, это элементарные же вещи :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:07:42 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
Таблоидя по ТРИ раза делал каждый запрос. Статистика приведена в каждом случае для третьего прогона. не везде. Вот тут 15357511 у тебя "повторяем забег" Buffers = 524288 Reads = 1430580 то есть непонятно, в таблице 1430к страниц, или 1950к страниц. Нужен первый select count, а еще лучше с кэшем в 1024 например. Ну в общем, именно чтобы понять скорость вычитки с диска, с кэшем ОС, и так далее. Потом уже можно "троекратно" экспериментировать со всякими условиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:11:13 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
kdvТаблоидЧто мне с этого каунта, когда он саму строку не вычитывает ? он же только заголовок записи читает там. с этого каунта ты понимаешь скорость голой вычитки записей/версий, и можешь сравнить ее с "накладными расходами" на сравнение like, not like и т.д. Ну ей-богу, это элементарные же вещи :-)Кхе! ясен пень, что при наличии предиката where s like '%q' будут возникать "доп. расходы" (по сравнению с отсутствием оного). Интересует причина, по которой на скорость LIKE влияет число символов в строке, при том что сама строка и шаблон таковы, что поиск должен был прекратиться уже на первом символе: Код: plaintext 1. Спрашивается: как может на скорость LIKE влиять "хвост" из 100500 млн символов, если матчер увидит TRUE уже на первом символе ? И действия с базой (дисковый IO) тут вообще не причём, вроде бы: это и в execute block'e видно, где в базу никто не лезет. Посмотри выше , плз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:16:56 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
kdvто есть непонятно, в таблице 1430к страниц, или 1950к страниц. в базе - вот: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ЗЫ. А откудова он берёт вот это: Average record length: 528.50 - я не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:22:30 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
понднимаю топег. народ, ура! Источники Света починили в трёшке mon$-запросы, теперь взлёт ракеты просто: Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Current memory = 3030337752 Delta memory = 15434792 Max memory = 3149496984 Elapsed time= 0.75 sec Cpu = 0.00 sec Buffers = 524288 Reads = 13 Writes = 570 Fetches = 1425859 (при том, что сейчас на этой базе молотит 450 зверских DML'ек) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:32:03 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
пардон, обшибся топегом. Это я вот сюда хотел: http://www.sql.ru/forum/1049076/nagruzochnyy-test-300-isql-vsegda-rabotavshiy-mon-zapros-stal-valit-svoy-zhe-konnekt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:33:56 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
Таблоидесли матчер увидит TRUE уже на первом символе Ничего о не увидит, пока DPM не прочитает запись, SQZ её не распакует, а INTL не приведёт всю строку к пригодному к сравнению виду в соответствии с коллейтом. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:42:55 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНичего о не увидит, пока DPM не прочитает запись, SQZ её не распакует, а INTL не приведёт всю строку к пригодному к сравнению виду в соответствии с коллейтом.а если строка больше, чем остаток свободной памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:49:41 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТаблоидесли матчер увидит TRUE уже на первом символе Ничего о не увидит, пока DPM не прочитает запись, SQZ её не распакует, а INTL не приведёт всю строку к пригодному к сравнению виду в соответствии с коллейтом.а что тогда в случае с execute block'ом, где нет никакой записи и её распаковки ? только INTL там так тупит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 22:57:10 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидА откудова он берёт вот это: Average record length: 528.50 - я не понял. из фактов. Как работает RLE-сжатие, рассказывалось неоднократно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 23:03:26 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
Таблоидпочинили в трёшке mon$-запросы ничего не трогали, ей-богу :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 23:05:22 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1068116&msg=15357511 вот что получается при обычном execute block'e, когда строка уже предварительно создана с замыкающими пробелами - тут вообще к базе обращений нету : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Решил проверить, что там на яве будет в аналогичном случае (NB: такой же интерпретируемый язык, как и BLR (или как там его)). А именно: будет ли зависеть время выполнения от длины строки. code: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Статистика по запускам: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. А ведь регэкспы, да еще в яве - не самое быстрое оружие. Да, и еще: эта статистика - не на мощном серваке, а на PC-чахотке 2.4 MHz / ram 1 gb. В общем, "так грустно, что хочется танцевать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 02:44:23 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Для S varchar(20) - 2.8 сек. varchar(2000) - 3.2 сек. varchar(32000) - 9.7 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 06:29:51 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
В таблице одна запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 06:38:18 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидИнтересует причина, по которой на скорость LIKE влияет число символов в строке сравнение выполняется в некоей канонической форме, в которую аргументы преобразуются перед сравнением. Для простых случаев каноническое представление может совпадать с исходным, но даже в этом случае исходная строка копируется. Само сравнение реально заканчивается на первом же символе, а вот подготовительные alloc + memcpy наверняка и жрут время в зависимости от длины строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 11:05:51 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
dimitr Для простых случаев каноническое представление может совпадать с исходным, но даже в этом случае исходная строка копируется.1) Какова цель такого преобразования, почему сразу нельзя скормить строку и шаблон на поиск соотв-вия ? 2) Можно ли избежать этого копирования в этих простых случаях ? (коих не так уж мало, КМК: запросы вида select * from contragents c where c.name like '%НЕФТ%ГАЗ%' - частые гости любой произв. системы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 12:52:47 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
Таблоид, 1) приведение к виду, позволяющему побайтовый поиск. Для мультибайтовых чарсетов, например. 2) теоретически можно. Пиши трекеру, авось Адриано сподобится этим заняться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 12:59:18 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
Таблоид1) Какова цель такого преобразования, почему сразу нельзя скормить строку и шаблон на поиск соотв-вия ? Тебе ведь регистронечувствительный поиск, небось, хочется?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 13:46:57 |
|
||
|
where s LIKE '%txt%' *vs* where s NOT like '%txt%': первое быстрее. Why ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТаблоид1) Какова цель такого преобразования, почему сразу нельзя скормить строку и шаблон на поиск соотв-вия ?Тебе ведь регистронечувствительный поиск, небось, хочется?..тссс! хочется, да! только никому не говори! Но это... LIKE в отличие от CONTAINING - он же того, регистроЧувственный как раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 13:52:59 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38514781&tid=1563981]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
189ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 493ms |

| 0 / 0 |
