Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

про 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.042 c
1-1141210945
eger
2006-03-01 14:02
2006.04.02
Утечка памяти


2-1142777987
Der Nechk@ssoff
2006-03-19 17:19
2006.04.02
Открытие файла в MediaPlayer


4-1137307147
mao
2006-01-15 09:39
2006.04.02
Необходимо закрыть чужое приложение/процесс


6-1131636999
Aleksandr.
2005-11-10 18:36
2006.04.02
Почему MAPI_DIALOG не срабатывает с OutLook?


2-1142593667
Fenix
2006-03-17 14:07
2006.04.02
Разбиение рисунка на части.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский