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

start [/forum/search_topic.php?author=DmitryB&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 684ms |
| total: | 846ms |

| 0 / 0 |
