Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

про Order by... [D7, dBase, FoxPro]


Wood ©   (2006-02-06 08:28:00) 

Сделал программку для локальной базы (dbf).
Запросы выполнялись быстро. Сортирован запрос был order by 'неважно что'. (Local SQL - BDE)
Радовался до тех пор, пока кол-во записей не перевалило за 1000. Теперь при включении в запрос order by жду несколько минут выполнения. Без сортировки order by - все ок, как и раньше.
Видимо, я чего-то не знаю про order by.
Подскажите инфу или советом.
Сенкс.


Wood   (2006-02-07 06:55:00) [1]

[14]- коллапс :)

всем спасибо!
Действительно, неполадки в самой базе.


Личность   (2006-02-07 05:38:00) [2]

н-дя... калапс...


Wood   (2006-02-07 03:09:00) [3]

[10] - я выше оговорился, не 1000, а 2000 записей.
[11] - если окажется что 1<>2, то что это значит?
[12] - антивирус-то причем?! Поясните.


Anatoly Podgoretsky   (2006-02-06 21:27:00) [4]

Не помешает проверка с отключеным антивирусом.


msguns   (2006-02-06 14:46:00) [5]

>Sergey13 ©   (06.02.06 14:32) [10]
>Мне кажется файлы порченные

1. Select count(*) from table
2. Посмотреть каким нибудь экплорером таблицу - № последней записи

Сравнить 1 со 2


Sergey13   (2006-02-06 14:32:00) [6]

2[8] Wood   (06.02.06 14:17)
>что это? Поясните, плз, ни разу не делал...
Этот запрос покажет сколько записей приходится на каждую дату. ИМХО, это тебе слабо поможет, если поможет вообще.
Попробуй перелить данные в новые файлы (например datapump-ой). Мне кажется файлы порченные - на 1000 записей не должно быть нескольких минут сортировки.


Johnmen   (2006-02-06 14:28:00) [7]


> Wood   (06.02.06 14:17) [8]


Не бери в голову, Серёга погорячился...:)


Wood   (2006-02-06 14:17:00) [8]

>SELECT FDate, Count(ID) CntDate From Table Group By FDate
что это? Поясните, плз, ни разу не делал...
У меня в проге юзеру предлагается ввести диапазон дат (TDateTimePicker) а затем по кнопке "ок" производится выборка


msguns   (2006-02-06 11:02:00) [9]

>Wood   (06.02.06 10:57) [5]
>как именно ограничивать, если, по большей части, выборка берется для определения диапазона дат и надо выбрать именно определенный диапазон.

"Илиментарно, Ватсон" (с) :

1. Делается запрос типа
SELECT FDate, Count(ID) CntDate From Table Group By FDate

Юзверю показывается табличка типа

Дата   К-во записей

и предлагается указать диапазон.

После чего делается выборка в указанном диапазоне.

Возможно, вместо "Дата" в табличке удобнее будет показывать "Период" (неделя, месяц, квартал..). А можно сделать это настраиваемым.


Wood   (2006-02-06 10:57:00) [10]


> Да и количество выдаваеиых пользователю строк следует ограничивать.
>  Ведь не за горами и 100 000. [1]

как именно ограничивать, если, по большей части, выборка берется для определения диапазона дат и надо выбрать именно определенный диапазон. Куда уж ограничивать... :(


msguns   (2006-02-06 10:57:00) [11]

Масл.. то бишь индексами каш.. тьфу ! таблицу не испортишь ! Но не факт, что при добавлении большого кол-ва индексов сделаешь ее более вкусной.


Wood   (2006-02-06 10:53:00) [12]

прошу прощения, не за 1000, а за 2000

> а то вдруг у него там 'неважно что' это блоб поле, и оно
> почемуто сортирует по нему вместо ошибки о непозволительности
> этого

нет, не блоб, по дате или номеру (поле числовое)

> В БД есть "длинные" поля

длинные - это сколько?

> В БД масса "мертвых" (помеченных на удаление) записей

нет помеченных
> Какая-то фигня в самом запросе

запрос прост, тем не менее, возможно тормоза из-за того, что из 31 поля я выбираю "SELECT *", а не указываю определенные, только нужные поля?

> Что-то с памятью моей стало

ага, когда запрос "думает" - точно стало :)
PS: база не моя, только запрос из нее нужен. На счет индексов: может стоит динамически создавать индексацию по сортировочному полю? Побаиваюсь запортить базу :(


msguns   (2006-02-06 09:52:00) [13]

>1000 записей, несколько минут?.

ИМХО, тут не индексы..

1. В БД есть "длинные" поля
2. В БД масса "мертвых" (помеченных на удаление) записей
3. Какая-то фигня в самом запросе
4. "Что-то с памятью моей стало" (с)


sniknik   (2006-02-06 09:18:00) [14]

1000 записей, несколько минут?... тут что с индексами что без них на секунды максимум счет должен идти (т.е. ~ меньше 1й).
чегото там не то, и без подробного описания проблемы никак (а то вдруг у него там 'неважно что' это блоб поле, и оно почемуто сортирует по нему вместо ошибки о непозволительности этого).


ЮЮ   (2006-02-06 09:09:00) [15]

Очевидно, настала полра создавать индексы по полям, по которым производится сортировка.

З.Ы. Да и количество выдаваеиых пользователю строк следует ограничивать. Ведь не за горами и 100 000.


Наверх

Титульная страница Поиск, карта сайта Написать письмо