|
|
|
как улучшить запрос
|
|||
|---|---|---|---|
|
#18+
Дано : таблица MAN с полями Код: sql 1. Задача : выбрать человека(ТОЛЬКО имя) , у которого телефон заканчивается на 55, и адресс при этом самый длинный из таких. Решение: Я изначально отверг создание новой таблицы , куда положил бы всех людей с требуемым телефоном. Так же отверг пользоватлеьскую функцию с запросом на выборку людей с требуемым телефоном. Пытался сделать так : Код: plsql 1. Но тут 2 беды : 1) Надо группировать, а если это выоплнить, то максимум не будет найден по всей таблице, а лишь по группам 2) в результат попадет столбец с максимуом адреса, мне он не нужен выполнять два раза выборку по телефонам для поиска сначала максимума , а потом человека с адресом такой длины нерационально. PS объясните, почему необходимо группировать значения перед вычислением максимума, в случае , если нужн овывести ЕЩЕ ОДНО поле. Поомгите написать запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2013, 22:42:03 |
|
||
|
как улучшить запрос
|
|||
|---|---|---|---|
|
#18+
aleXVoipp, Это очень частая задача, посмотрите ФАК "выборка первой/последней записи". Стандартное решение -- подзапрос или аналогичное само-соединение. кстати, если у вас часто запросы имено с конца телефона, то можно добавить еше одно поле с телефоном-перевертышем и индексом на нем. Тогда поиск может зацепить индекс и скорость возрастет на порядок (-дки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2013, 23:56:06 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38459057&tid=1835757]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 378ms |

| 0 / 0 |
