Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / select max(id) / 11 сообщений из 11, страница 1 из 1
22.11.2008, 21:14
    #35669872
lf
lf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
Есть большая таблица с проиндексированным полем field, запрос из которой
Код: plaintext
select max(id) from table group by field
выполняется довольно быстро.

Но если попытаться запросить
Код: plaintext
select field,max(id) from table group by field
то запрос "вешается намертво".

Возможны ли рабочие варианты для подобного запроса?
...
Рейтинг: 0 / 0
24.11.2008, 06:43
    #35670711
=Dimon=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
lfЕсть большая таблица с проиндексированным полем field, запрос из которой
Код: plaintext
select max(id) from table group by field
выполняется довольно быстро.

Но если попытаться запросить
Код: plaintext
select field,max(id) from table group by field
то запрос "вешается намертво".

Возможны ли рабочие варианты для подобного запроса?
А что за структура таблицы? Сколько записей?
...
Рейтинг: 0 / 0
24.11.2008, 07:01
    #35670712
=Dimon=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
lf,

попробовал на классе с 9 полями и 1.5 млн строк.
С простым индексом 1 Ваш запрос выполнялся - 40 сек, когда сменил на битмап - 21 сек.
Второй ваш запрос выполнился - за 24 сек.
...
Рейтинг: 0 / 0
24.11.2008, 08:42
    #35670760
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
Похоже там field не "простой"...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
24.11.2008, 11:03
    #35671021
lf
lf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
Полмиллиона записей, поле field обычное (%String, индексируемое). Всего полей в таблице - 16 (т.е. field1, field2 и т.д.).
Запрос умирает.
...
Рейтинг: 0 / 0
24.11.2008, 11:24
    #35671088
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
lfполе field обычное (%String, индексируемое)
А сколько "разных значений" у этого поля? Т.е. сколько бы получилось строк в итоге запроса

Код: plaintext
select field,max(id) from table group by field

Ведь там для каждой строчки будет вычисляться max(id)...
...
Рейтинг: 0 / 0
24.11.2008, 11:25
    #35671091
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
А такой запрос

Код: plaintext
select field from table group by field

сколько будет выполняться?
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
24.11.2008, 11:51
    #35671191
lf
lf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
Для каждого field существует два-три id, т.е. строк в результате примерно 1/3 от общего количества.
"Простой" запрос выполняется несколько секунд.
...
Рейтинг: 0 / 0
24.11.2008, 12:25
    #35671341
=Dimon=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
lfПолмиллиона записей, поле field обычное (%String, индексируемое). Всего полей в таблице - 16 (т.е. field1, field2 и т.д.).
Запрос умирает.
А битмап индекс построили?
...
Рейтинг: 0 / 0
24.11.2008, 12:29
    #35671359
=Dimon=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
lfДля каждого field существует два-три id, т.е. строк в результате примерно 1/3 от общего количества.
"Простой" запрос выполняется несколько секунд.
Ничего себе несколько секунд. В моем случае 21 секунда. :(
А если попробовать одинаковые значения выкинуть в отдельную таблицу, и указывать в поле field ссылку на их ID. По идее, должно гораздо быстрее выполняться.
...
Рейтинг: 0 / 0
25.11.2008, 09:10
    #35673125
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select max(id)
=Dimon=Ничего себе несколько секунд. В моем случае 21 секунда. :(
Но ведь несколько!
=Dimon=одинаковые значения выкинуть в отдельную таблицу, и указывать в поле field ссылку на их ID
Праильное решение! (с) из выступления Г.Хазанова

Там использовать связь один ко многим.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / select max(id) / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]