|
|
|
Поиск строки
|
|||
|---|---|---|---|
|
#18+
Пол ляма записей при отборе по строке + с использованием функции - ни какие индексы не помогут!!! Меняй понятие - "долго выполняется" И всех убеждай, что это им еще повезло!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 12:03:51 |
|
||
|
Поиск строки
|
|||
|---|---|---|---|
|
#18+
при отборе по строке просто, проблемм нет, последняя запись за 1,5 секунда, а с функцией косяк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 12:29:24 |
|
||
|
Поиск строки
|
|||
|---|---|---|---|
|
#18+
еще 2 решения: если вероятных вхождений пробелов немного - динамически компоновать запрос с условием WHERE PTNRDRU = In('A 000 264 23 74', 'A 000 264 2374',....). Но если пробелы могут встречаться где угодно - получим (на N позициях) ~ 2**N вариантов - выйдем за допустимую длину SQL строки (~N*2**N > 32 768 символов - уже при ~28-29 позициях). Если возможная строка длиннее 29 символов то: вместо строки IN() можно использовать специально созданную таблицу с одним полем (индексированным). Накидывать туда до ~100000 записей не так уж долго. А выборку по INNER JOIN ON t1.[индексированное поле]=tmp.[индексированное поле] будет делать много быстрее, чем Replace () по 5*10**5 записей. _______ Реализацию еще одной идеи я так и не придумал - надо вставить в Like 'xxxx' список [], включающий и пробел и пустую строку. Кажется это невозможно. Есть вариант идеи - провести первичный отбор, используя * между всеми значащими символами строки отбора (т.е. ~ LIKE 'A*0*0*0*2*6*4*2*3*7*4') (поскольку маска начинается не со *, то при этом индекс все-же будет использоваться), а уж на результат (выборку, которая заведомо будет много меньше всей таблицы) подействовать реплайсом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 13:00:45 |
|
||
|
Поиск строки
|
|||
|---|---|---|---|
|
#18+
В первом случае пишет ошибку синтаксиса, если я правильно понял, это должно было выглядеть так: SELECT * FROM PLDATA WHERE PTNRDRU = In('A0002642374'); пишет : ошибка синтаксиса(пропушен оператор, указывает на In) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 14:34:30 |
|
||
|
Поиск строки
|
|||
|---|---|---|---|
|
#18+
авторWHERE PTNRDRU = In('A0002642374'); тьфу, плиинннн. оп-пиисаался вот эт-тто "раавноо" таам лиишнее а выглядеть должно так: WHERE PTNRDRU IN(а тут перебор всех возможных случаев ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 15:20:43 |
|
||
|
Поиск строки
|
|||
|---|---|---|---|
|
#18+
этот вариант не пойдет, я не знаю изначально как будет у меня разбит номер, мне нужно ввести номер без пробелов а получить из таблицы с пробелами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 15:44:49 |
|
||
|
Поиск строки
|
|||
|---|---|---|---|
|
#18+
bobanэтот вариант не пойдет, я не знаю изначально как будет у меня разбит номер, мне нужно ввести номер без пробелов а получить из таблицы с пробелами. а какого хера ты мозги канифолишь? тебе же написали Код: plaintext или полагашь, что там от нехер делать буковки понатыканы, а за ними ни хера не стоит? репу-то сморщь чутка. Тебе же сказали, (етить тя через коромысло) Код: plaintext А если деять ни хера не хошь/не мож - гуляйнах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 16:24:06 |
|
||
|
Поиск строки
|
|||
|---|---|---|---|
|
#18+
assa Какой ты крутой пацан, только не хрена помоему не шаришь. Языком молоть любой может, а вот если бы ты конкретней говорил, людям бы жить легче было. Деятель, зато слово нах знает. ХА ХА.Понты кинуть любой может, только ничего из твоих слов не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 16:34:11 |
|
||
|
Поиск строки
|
|||
|---|---|---|---|
|
#18+
авторлюдям бы жить легче было а вот с этим как раз и не сюда. С этим как раз - нах. С такими запросами - груши околачивать, а не SQL выражовывания писать. вумник, ля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 16:59:25 |
|
||
|
Поиск строки
|
|||
|---|---|---|---|
|
#18+
походя всплыло "чисто" SQL-ное решение комбинаторной задачи 1. Вспомогательная таблица l, пустая. 1 поле t - текст, 1 символ. 2. вводишь 2 строки: INSERT INTO list ( t ) VALUES(' '); INSERT INTO list ( t ) VALUES(''); для строки 'A0002642374' составляешь запрос вида: Код: plaintext 1. 2. 3. 4. 5. а с ним сделай: Код: plaintext 1. 2. (в общем виде - замени q на параметрический (используя mid([параметр], позиция,1) вместо буковок) Но, думается, решение скорее факультативное, чем имеющее прикладное значение. ЗЫ что-й то я надысь на редкость наврал по количеству позиций. 20 позиций дают уже более лимона вариантов. а 32к вариантов ~ всего-то 10+5 позиций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2004, 16:22:15 |
|
||
|
|

start [/forum/topic.php?fid=45&gotonew=1&tid=1671747]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 376ms |

| 0 / 0 |
