Текущий архив: 2006.04.02;
Скачать: CL | DM;
Внизпро Order by... Найти похожие ветки
← →
Wood (2006-02-06 08:28) [0]Сделал программку для локальной базы (dbf).
Запросы выполнялись быстро. Сортирован запрос был order by "неважно что". (Local SQL - BDE)
Радовался до тех пор, пока кол-во записей не перевалило за 1000. Теперь при включении в запрос order by жду несколько минут выполнения. Без сортировки order by - все ок, как и раньше.
Видимо, я чего-то не знаю про order by.
Подскажите инфу или советом.
Сенкс.
← →
ЮЮ © (2006-02-06 09:09) [1]Очевидно, настала полра создавать индексы по полям, по которым производится сортировка.
З.Ы. Да и количество выдаваеиых пользователю строк следует ограничивать. Ведь не за горами и 100 000.
← →
sniknik © (2006-02-06 09:18) [2]1000 записей, несколько минут?... тут что с индексами что без них на секунды максимум счет должен идти (т.е. ~ меньше 1й).
чегото там не то, и без подробного описания проблемы никак (а то вдруг у него там "неважно что" это блоб поле, и оно почемуто сортирует по нему вместо ошибки о непозволительности этого).
← →
msguns © (2006-02-06 09:52) [3]>1000 записей, несколько минут?.
ИМХО, тут не индексы..
1. В БД есть "длинные" поля
2. В БД масса "мертвых" (помеченных на удаление) записей
3. Какая-то фигня в самом запросе
4. "Что-то с памятью моей стало" (с)
← →
Wood (2006-02-06 10:53) [4]прошу прощения, не за 1000, а за 2000
> а то вдруг у него там "неважно что" это блоб поле, и оно
> почемуто сортирует по нему вместо ошибки о непозволительности
> этого
нет, не блоб, по дате или номеру (поле числовое)
> В БД есть "длинные" поля
длинные - это сколько?
> В БД масса "мертвых" (помеченных на удаление) записей
нет помеченных
> Какая-то фигня в самом запросе
запрос прост, тем не менее, возможно тормоза из-за того, что из 31 поля я выбираю "SELECT *", а не указываю определенные, только нужные поля?
> Что-то с памятью моей стало
ага, когда запрос "думает" - точно стало :)
PS: база не моя, только запрос из нее нужен. На счет индексов: может стоит динамически создавать индексацию по сортировочному полю? Побаиваюсь запортить базу :(
← →
Wood (2006-02-06 10:57) [5]
> Да и количество выдаваеиых пользователю строк следует ограничивать.
> Ведь не за горами и 100 000. [1]
как именно ограничивать, если, по большей части, выборка берется для определения диапазона дат и надо выбрать именно определенный диапазон. Куда уж ограничивать... :(
← →
msguns © (2006-02-06 10:57) [6]Масл.. то бишь индексами каш.. тьфу ! таблицу не испортишь ! Но не факт, что при добавлении большого кол-ва индексов сделаешь ее более вкусной.
← →
msguns © (2006-02-06 11:02) [7]>Wood (06.02.06 10:57) [5]
>как именно ограничивать, если, по большей части, выборка берется для определения диапазона дат и надо выбрать именно определенный диапазон.
"Илиментарно, Ватсон" (с) :
1. Делается запрос типа
SELECT FDate, Count(ID) CntDate From Table Group By FDate
Юзверю показывается табличка типа
Дата К-во записей
и предлагается указать диапазон.
После чего делается выборка в указанном диапазоне.
Возможно, вместо "Дата" в табличке удобнее будет показывать "Период" (неделя, месяц, квартал..). А можно сделать это настраиваемым.
← →
Wood (2006-02-06 14:17) [8]>SELECT FDate, Count(ID) CntDate From Table Group By FDate
что это? Поясните, плз, ни разу не делал...
У меня в проге юзеру предлагается ввести диапазон дат (TDateTimePicker) а затем по кнопке "ок" производится выборка
← →
Johnmen © (2006-02-06 14:28) [9]
> Wood (06.02.06 14:17) [8]
Не бери в голову, Серёга погорячился...:)
← →
Sergey13 © (2006-02-06 14:32) [10]2[8] Wood (06.02.06 14:17)
>что это? Поясните, плз, ни разу не делал...
Этот запрос покажет сколько записей приходится на каждую дату. ИМХО, это тебе слабо поможет, если поможет вообще.
Попробуй перелить данные в новые файлы (например datapump-ой). Мне кажется файлы порченные - на 1000 записей не должно быть нескольких минут сортировки.
← →
msguns © (2006-02-06 14:46) [11]>Sergey13 © (06.02.06 14:32) [10]
>Мне кажется файлы порченные
1. Select count(*) from table
2. Посмотреть каким нибудь экплорером таблицу - № последней записи
Сравнить 1 со 2
← →
Anatoly Podgoretsky © (2006-02-06 21:27) [12]Не помешает проверка с отключеным антивирусом.
← →
Wood (2006-02-07 03:09) [13][10] - я выше оговорился, не 1000, а 2000 записей.
[11] - если окажется что 1<>2, то что это значит?
[12] - антивирус-то причем?! Поясните.
← →
Личность (2006-02-07 05:38) [14]н-дя... калапс...
← →
Wood (2006-02-07 06:55) [15][14]- коллапс :)
всем спасибо!
Действительно, неполадки в самой базе.
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.039 c