Главная страница
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.028 c
2-1142499600
atmospheric
2006-03-16 12:00
2006.04.02
наследование класса


1-1141213505
Aleksandr.
2006-03-01 14:45
2006.04.02
Что случилось с GetHeapStatus?


6-1134724621
Puk
2005-12-16 12:17
2006.04.02
Передать данные POST-методом в окно IE


2-1142520521
kop
2006-03-16 17:48
2006.04.02
Строки


2-1142848604
KLAUS
2006-03-20 12:56
2006.04.02
OR