Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.26;
Скачать: CL | DM;

Вниз

Виснет SQL   Найти похожие ветки 

 
Silenser ©   (2002-12-04 07:40) [0]

подскажите у меня запрос там три файла dbf один из них 17 мегов
при активизации запроса он виснет наглухо, если беру базу с меньшим объемом то нормально.... И КАК РАБОТАТЬ СО ЗДОРОВЫМИ БАЗАМИ


 
Alex45   (2002-12-04 09:25) [1]

Всё зависит от запроса. Попробуй его оптимизировать. 17Мб - это прилично, но вовсе не много. А лучше пользуйся как минимум Интербэйсом.


 
passm ©   (2002-12-04 10:30) [2]

Silenser © (04.12.02 07:40)> КАК РАБОТАТЬ СО ЗДОРОВЫМИ БАЗАМИ Индексировать...


 
sniknik ©   (2002-12-04 11:10) [3]

17Мб даже очень мало. работаю с файлами ~ от 0 до 25мг (в среднем одна посылка 28-30мг. в 11 файлах) и они даже и неиндексированы (не нужно при передаче), потом все это уходит в MSSQL и там маштабы немного :-) другие.

а вот в программе которая мне эти данные передает есть таблици (в разных местах разные) до 120мг (и еще растут). и ничего индексы только время от времени летят (но не изза программы чаще чтото случается, свет выключат упсов нет или как одна тетка заявила "он так противно запищал я его выключила" а программу предварительно недоперла :-)).

p.s. все дело в твоем запросе. может ему действительно индекс нужен или места не хватает обьеденение сделать или .и.тд. исходных данных маловато.


 
Anatoly Podgoretsky ©   (2002-12-04 12:28) [4]

А может ты просто недождался окончания запроса.
17 мб для dbf это не много, много там начинается после 100 мб или 100 000 записей


 
silenser ©   (2002-12-05 12:31) [5]

Окончания я ждал очень долго, подвисла дельфя конкретно
вот сам запрос
select * from newpodr a, shtat b, dolg c
where b.ceh=a.n1 and
b.otdel=a.n2 and
b.buro=a.n3 and
b.gruppa=a.n4 and
c.kod_dolg=b.kod_dolg and
c.kod_d2=b.kod_d2
order by b.Kod_kor,b.ceh,b.otdel,b.buro,b.gruppa,b.kod_dolg,b.kod_d2


 
Fiend ©   (2002-12-05 14:27) [6]

думаю шо Анатолий прав на сто процентов. ты просто не дождался окончания выполнения запроса.
да и индексов надо подбросить по любому.
сам посмотри сколько условий+три таблицы+17Мб
Учти шо всё это драйвер раскладывает в так называемое декартово произведение этих трёх таблиц, так шо в итоге обрабатывает не 17 а поболе мегабайт. Если добавишь индексов дело пойдёт намного быстрее. Хотя драйвер может не усечь какие именно использовать если их будет несколько. Тада надо явно указать


 
sniknik ©   (2002-12-05 14:49) [7]

Декартово произведение это матрица всех возможных комбинаций.
Количество строк в декартовом произведении равно числу строк первой таблици умноженному на число строк второй таблици.
(простое обьеденение по одному полю 2-х таблиц, больше еще множ)

можеш посчитать сколько в в твоем запросе будет. и сколько под временные таблици будут занимать.


 
atmamont ©   (2002-12-05 19:24) [8]

короче отсюда вывод - надо читать книжки по SQL и писать запросы не "абы работало", а думать как оно будет отрабатываться на сервере. Как минимум вместо произведения использовать JOIN


 
Anatoly Podgoretsky ©   (2002-12-05 19:46) [9]

Короче тебе надо подождать несколько суток, прежде чем говорить, что зависло. Объем перератываемых данных у тебя явно будет выражать многими гигабайтами, хорошо еще если твои таблицы смогут разместиься в памяти. Кроме самой выборки по условию, ты еще и выводишь все поля, плюс конечная сортировка.
Смотри что у тебя получается для одной записи из А
сначала проверяются все записи в Б по цеху, затем по отделу и так далее.
Как минимум у тебя произведение A*B*C



Страницы: 1 вся ветка

Текущий архив: 2002.12.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
14-86093
RV
2002-12-05 10:14
2002.12.26
Задачка :)


14-86164
TTCustomDelphiMaster
2002-12-06 15:34
2002.12.26
Пятница - банно стаканный день


14-86108
p_albert77@mail.ru
2002-12-04 19:49
2002.12.26
OpenGL and Delphi


1-85897
безумный ламер
2002-12-16 11:41
2002.12.26
Траблы с иконками...


14-86156
Mad_Ghost
2002-12-06 15:15
2002.12.26
TEST