|
|
|
Почему так работает ? пните меня кто-нибудь ;) [sql запрос]
|
|||
|---|---|---|---|
|
#18+
У меня очередной спор. Есть простейший SQL запрос: select AC.ACCOUNTNO, from CUST_COUNTRIES C, AGENTS AG, ACCOUNTS AC where AC.AGENTCODE = AG.CODE and AG.COUNTRY = C.ID and AC.OPENDATE >= '10/21/2003' and AC.OPENDATE <= '10/25/2003 23:59:59' order by AC.ACCOUNTNO он возвращает ДВЕ записи: 78 81 Если я к нему добавляю еще одно условие AC.ACCOUNTNO = '82' он возвращает всего одну запись. 82 Вопрос, почему ТАК? почему ее не было в первом ответе от сервера? моя версия - убиты индексы или еще что-то с базой. Хозяин SQL сервера - отвечает (он еще и гуру в IB) что типа так работает оптимизатор. И что правильнее через JOIN все это проделывать... И приводит мне куски plan по моим запросам: PLAN MERGE (SORT (C NATURAL),SORT (JOIN (AC NATURAL,AG INDEX DB$PRIMARY7)))) а когда добавляем уточнение по ACCOUNTNO то PLAN JOIN (C NATURAL,AC INDEX (RDB$4),AG INDEX (RDB$PRIMARY7)) честн говоря, мне такое поведение базы (пропадание 82) непонятно. и ставит под сомнение правильность всех кодов, что я писал предыдущие года. не дайте моей голове вскипеть вообщем. кто из нас прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 13:01 |
|
||
|
Почему так работает ? пните меня кто-нибудь ;) [sql запрос]
|
|||
|---|---|---|---|
|
#18+
автор писал:Хозяин SQL сервера - отвечает (он еще и гуру в IB) что типа так работает оптимизатор. И что правильнее через JOIN все это проделывать... Оптимизатор тут непричем... А вот насчет join он совершенно прав. Дело в том, что конструкция SELECT ... FROM A,B,C ... преобразуется сервером в SELECT ... FROM A INNER JOIN B ON() INNER JOIN C ON() ... , если я не ошибаюсь. Вот отсюда и такие результаты ... Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 14:06 |
|
||
|
Почему так работает ? пните меня кто-нибудь ;) [sql запрос]
|
|||
|---|---|---|---|
|
#18+
И что? если там есть запись - почему ее не показывает мне? она же попадает под условия.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 15:13 |
|
||
|
Почему так работает ? пните меня кто-нибудь ;) [sql запрос]
|
|||
|---|---|---|---|
|
#18+
Сделай backup/restore - скорее как раз индексы битые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 15:54 |
|
||
|
Почему так работает ? пните меня кто-нибудь ;) [sql запрос]
|
|||
|---|---|---|---|
|
#18+
у меня нет доступа к backup/restore :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 16:48 |
|
||
|
Почему так работает ? пните меня кто-нибудь ;) [sql запрос]
|
|||
|---|---|---|---|
|
#18+
Ну так пускай их админ сделает. Можно ещё попробовать написать order by AC.ACCOUNTNO DESC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 18:49 |
|
||
|
Почему так работает ? пните меня кто-нибудь ;) [sql запрос]
|
|||
|---|---|---|---|
|
#18+
Спасибо, все разрешилось.\r \r /topic/56414 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 12:49 |
|
||
|
Почему так работает ? пните меня кто-нибудь ;) [sql запрос]
|
|||
|---|---|---|---|
|
#18+
Дмитрий Еманов определил такое поведение как давно известную бяку и призвал к смирению и надеждам на светлое будущее В общем-то я пробовал - с VARCHAR вроде нормально работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:06 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32310195&tid=1579732]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 476ms |

| 0 / 0 |
