![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
про 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.