Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.027 c
1-1141196864
max3
2006-03-01 10:07
2006.04.02
имя пользователя


2-1142944672
Алексей5
2006-03-21 15:37
2006.04.02
Удаление лишних пробелов в поле


2-1142504140
KyRo
2006-03-16 13:15
2006.04.02
Занят файл или нет ?


8-1130151436
Fedelio_
2005-10-24 14:57
2006.04.02
Компрессия в MPEG2 с использованием DirectShow


11-1123526991
mixis
2005-08-08 22:49
2006.04.02
Борюсь с подменю - заменить и удалить