Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Что быстрее: Like или Bitwise And ?  [new]
DNV
Member

Откуда: Ильичевск (Одесса)
Сообщений: 277
Что быстрее посимвольное сравнение или битовые операции?

делаю деревовидную систему. Думаю как быстрее будет работать выборка?

Допустим делаю выборку по категории 1A

node - char(10) --каждый символ соответствует текущей подкатегории

select * from tbl where node like '1A%'

или

node - bigint --каждый байт соответствует текущей подкатегории

select * from tbl where (node & 0x1A)=0x1A

проверял на существующей базе, но дает одинаковый результат, наверное потому что там только около 2000 строк.
25 фев 04, 14:25    [550477]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
нда...
bitwise как-то пошустрей наверно...
25 фев 04, 14:32    [550501]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Если есть индекс, то на больших объемах LIKE '1A%' быстрее будет... На малых, наверняка и там, и там сканирование...
25 фев 04, 14:32    [550503]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
2 tpg
Это если каталоги 1 уровня только будут искаться..
25 фев 04, 14:36    [550515]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
в смысле c 1
25 фев 04, 14:39    [550525]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
Гнездин Петр
Member

Откуда: Москва
Сообщений: 359
А как можно искать каталоги не с первого уровня? Все, у которых n-й уровень = x, независимо от "родителя"? Какой смысл?
25 фев 04, 14:42    [550541]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
2Гнездин Петр

Только что делал как раз такую задачу :)!
отчет по записям из каталогов у которых n-й уровень = x
25 фев 04, 14:44    [550560]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
и с like априори все равно не может быть хорошо ..
надо по другому..
25 фев 04, 14:47    [550568]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
LIKE при наличии индекса будет быстрее
Булевые ВСЕГДА будут сканить
25 фев 04, 15:02    [550627]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
Позволю себе уточнить еще тему ...
Все отвечали именно на subj топика.
а не на общий вопрос автора о структуре данных..

А если отвлечься от сравнения Like i &..

для этой задачи - эти оба метода организации данных эквивалентны.

Поясню на примере запроса автора топика:
--метод 1.a 


select * from tbl where node like '1A%'

--метод 1.b


select * from tbl where node >='1A' and node <'1B'

--метод 2 


select * from tbl where node >=0x1A000000 and node<0x1B000000


Скорость по большому счету должна быть одинакова...

Второй метод позволяет удобно хитрить с использованием масок - в некоторых случаях, и все-таки быстрей чуть должен быть...
Но и первый имеет свои плюсы.
25 фев 04, 20:03    [551346]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
баззззлайтер
Guest
а почему фишхук не сделать?
Казалось бы, первое что в голову приходит...

tbl
node int
,parentnode int FOREIGN KEY REFERENCES tbl(node)
,...

по parentnode индекс всегда будет использоваться,
и referential integriry не страдает...
25 фев 04, 21:09    [551413]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
2баззззлайтер
как будет выглядеть запрос выдающий все вложенные подкаталоги (не только 1 уровня) заданного каталога ?
по сравнению с уже приведенными примерами?
25 фев 04, 21:15    [551419]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
автор
а почему


Да потому, что ФАК лень читать и поиском пользоваться :) Сто раз говорено про кучу вариантов дерева. Нет, надо еще раз свое придумать :)
25 фев 04, 21:26    [551428]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
баззззлайтер
Guest
например, так:

select @id into #parents
insert into #parents (id) values (@id)
WHILE (1=1)
BEGIN
insert into #temp (id)
select id from tbl ,#parents
where tbl.parentnode=#parents.id

if (@@ROWCOUNT=0) break

insert into #nodes (id) select id from #temp
truncate table #parents
insert into #parents (id) select id from #temp
truncate table #temp
END

и с #nodes джойнить. или рекурсию устроить.

2Crimean и завсегдатаям - прошу прощения, удивился и запостил. Это же не вопрос, а вопрос-к-вопросу... Виноват.
25 фев 04, 22:00    [551450]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
DNV
Member

Откуда: Ильичевск (Одесса)
Сообщений: 277
>Crimean
если бы все как думали как ты, досих пор бы за оленями гонялись в каменном веке :D
а придумываем потому, что существующие не удовлетворяют. В японии таких любителей найти новое решение ценят, и платят даже если они не всегда удачные решения находят.

этот метод - наиболее удобный для моих целей.
----
кстати, я еще к этому алгоритму сделал кэшируемую таблицу путей. т.е. в отдельной таблице(чтоб не грузить основную) для каждой категории полный путь в HTML виде.
это удобно если часто приходится пользоваться поиском по категориям с указанием полного пути в результатах поиска.
При изменении категории любого уровня апдейт путей делается автозаменой по критерию Like
---
>баззззлайтер
ты предложил Самый тормозной вариант выборки пути из всех существующих :/

>rst
Браво за 2й метод. Как я сам не догадался?. Думаю так быстрее будет...
26 фев 04, 00:11    [551539]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
автор
Браво за 2й метод. Как я сам не догадался?. Думаю так быстрее будет...


Не обольщайся... По сравнению с им же предложенным методом 1.b скорее всего нисколечки.
26 фев 04, 07:27    [551650]     Ответить | Цитировать Сообщить модератору
 Re: Что быстрее: Like или Bitwise And ?  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
Скажем так:

Скорость по большому счету должна быть одинакова...

:-)
копейки там может какие-то...

Если страничка - то лучше Like
Не надо морочиться с преобразованием в строку(спецсимволы там и т.п) и наглядно видно структуру..
Раз 256 каталогов в уровне хватает,то и латиницы и цифр в 2 символа -за глаза..
26 фев 04, 07:33    [551651]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить