|
|
|
Отбор записей из таблицы
|
|||
|---|---|---|---|
|
#18+
Работаю в '97. В таблице есть числовое поле. Можно ли и как написать фильтр что бы выбрать все номера начинающиеся например на 54? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 20:31 |
|
||
|
Отбор записей из таблицы
|
|||
|---|---|---|---|
|
#18+
Преобразовать число в строку и взять первых 2 символа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2003, 09:08 |
|
||
|
Отбор записей из таблицы
|
|||
|---|---|---|---|
|
#18+
ИмяПоля Like '54*' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2003, 11:32 |
|
||
|
Отбор записей из таблицы
|
|||
|---|---|---|---|
|
#18+
Если у тебя стоит такая задача, то у тебя, скорее всего, ситуация, когда все числа таблицы имеют одинаковое количество цифр. Например, при запоминании какого-нибудь кода, который не просто так цифрами заполнен, а со смыслом (ИНН и прочие коды). Скажем, в твоём случае, числа, начинающиеся с 54 - это определённая группа кодов, физически характеризующая какую-нибудь родственную группу предметов. Так вот. Теперь объясним проще. В таком случае не надо использовать LIKE - этот оператор хорошо притормаживает. Используй целочисленное деление. Например, если у тебя все числа состоят из пяти цифр, достаточно сделать вот такую проверку: WHERE Field \ 1000 = 54 Такой фильтр будет работать куда быстрее, чем LIKE, но, повторяю, только при условии, что количество цифр в числе всегда одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2003, 17:06 |
|
||
|
Отбор записей из таблицы
|
|||
|---|---|---|---|
|
#18+
По поводу Like - не согласен!!! Если с двух сторон "*", тогда действительно труба... но Like, типа "54*" - должен работать достаточно быстро...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2003, 17:11 |
|
||
|
Отбор записей из таблицы
|
|||
|---|---|---|---|
|
#18+
И даже в этом случае медленнее на несколько порядков. Подчёркиваю - на НЕСКОЛЬКО порядков. Ты просто представь себе алгоритм, по которому работает LIKE. И сравни с 1 тактом процессора на команду DIV. P. S. Такты процессора я привёл только для сравнения, но сравнительный тест легко провести - создай таблицу с количеством строк не меньше ста тысяч, создай два запроса - с делением и с LIKE. Засеки время, повтори раз пятнадцать-двадцать, учти второстепенные факторы и так далее... :) Не рискну прогнозировать, но десяток-другой секунд разницы должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2003, 17:17 |
|
||
|
Отбор записей из таблицы
|
|||
|---|---|---|---|
|
#18+
2Suslik Твои доводы быть может справедливы, если отсутствует индекс по этому полю. В противном случае, LIKE будет работать быстрее, поскольку конструкция LIKE 'ABC*' использует индекс, а \ - нет (во всяком случае мне так кажется). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2003, 12:56 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32109817&tid=1682255]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 320ms |

| 0 / 0 |
