|
|
|
Быстрое сравнение строк с учётом null
|
|||
|---|---|---|---|
|
#18+
Добрый день. Подскажите самый быстрый способ сравнение строк с учётом null. Пока испробовал 3 метода: 1. a=b or (a is null and b is null) 2. a=b or (coalesce(a,b) is null) 3. a IS NOT DISTINCT FROM b Самый быстрый в моём случае первый. Может кто предложит более быстрый вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2014, 08:54:09 |
|
||
|
Быстрое сравнение строк с учётом null
|
|||
|---|---|---|---|
|
#18+
xProДобрый день. Подскажите самый быстрый способ сравнение строк с учётом null. Пока испробовал 3 метода: 1. a=b or (a is null and b is null) 2. a=b or (coalesce(a,b) is null) 3. a IS NOT DISTINCT FROM b Самый быстрый в моём случае первый. Может кто предложит более быстрый вариант? теоретически последний должен быть самым быстрым... а как вы проверяли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2014, 11:26:14 |
|
||
|
Быстрое сравнение строк с учётом null
|
|||
|---|---|---|---|
|
#18+
Идёт join к n таблицам, n-1 - это справочники, и ещё одна таблица фактов. На одной таблице выглядит так: Код: plsql 1. 2. 3. Но это простой пример, на практике идёт запрос к 3 до 10 таблицам. Структура таблиц простая: dim1 key(integer),name (text) temp dim1(itneger),value(double) Вот на таком запросе примерно и проверял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2014, 11:40:30 |
|
||
|
Быстрое сравнение строк с учётом null
|
|||
|---|---|---|---|
|
#18+
xPro, 4. coalesce(a, '') = coalesce(b, '') при необходимости создать функциональный индекс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 07:58:31 |
|
||
|
Быстрое сравнение строк с учётом null
|
|||
|---|---|---|---|
|
#18+
Просто Нафаня, ну если для вас null и строка нулевой длинны это одно и тоже, то можно и так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:47:58 |
|
||
|
Быстрое сравнение строк с учётом null
|
|||
|---|---|---|---|
|
#18+
xProДобрый день. Подскажите самый быстрый способ сравнение строк с учётом null. Пока испробовал 3 метода: 1. a=b or (a is null and b is null) 2. a=b or (coalesce(a,b) is null) 3. a IS NOT DISTINCT FROM b Самый быстрый в моём случае первый. Может кто предложит более быстрый вариант? самый быстрый в вашем случае 3-й. Код: sql 1. 2. 3. 4. 5. 6. 7. а вот в случае индексов, как сейчас помню, были проблемы с 3-м (индекс не пользовался), приходилось опускаться до 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:54:22 |
|
||
|
Быстрое сравнение строк с учётом null
|
|||
|---|---|---|---|
|
#18+
Не знаю насколько в тему, но касательно IS NOT DISTINCT FROM есть в документации вот такая строчка: At present, IS NOT DISTINCT FROM is handled much less efficiently than =, so don't do this unless you must. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 16:47:31 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=130&tid=1998789]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 344ms |

| 0 / 0 |
