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

Вниз

Не понятно что удерживает таблицу   Найти похожие ветки 

 
kyn66 ©   (2009-10-29 16:14) [80]


> Anatoly Podgoretsky ©   (29.10.09 16:11) [77]


Очень доходчиво и поучительно. Спасибо.


 
Anatoly Podgoretsky ©   (2009-10-29 16:16) [81]

> Inovet  (29.10.2009 16:12:18)  [78]

Индексы тоже, их же перестраивать нужно.


 
kyn66 ©   (2009-10-29 16:23) [82]


> Inovet ©   (29.10.09 16:12) [78]
> > [75] kyn66 ©   (29.10.09 16:04)> Не понятно, почему SQL
> так долго удаляетНу первое что приходит на ум - индексы
> не подходящие под условие WHERE, или вообще их нет.


Да нет, индексы есть, правда составной по двум полям "Tir;Nom" - к примеру и вот удаляю так

  ...
  SQL.Add("DELETE FROM TiragSL WHERE Tir = :p1");
  Params[0].Value := tir;
  ExecSQL;
  ...


Tir - как раз и есть поле с индексом. Пардон, удаляю с таблицы, в которой 2937140 записей, если это что изменит.


 
kyn66 ©   (2009-10-29 16:26) [83]

Может как раз то что таблица имеет индексы и при удалении записи переиндексируются, а это занимает определенное время. Может как вариант перед удалением записей удалить индексы (индексный файл) и потом уже их пересоздать заново, на новом наборе записей?


 
Inovet ©   (2009-10-29 16:39) [84]

> [82] kyn66 ©   (29.10.09 16:23)

Да вроде всё нормально, но 30 секунд многовато, как будто индекс не используется
> [83] kyn66 ©   (29.10.09 16:26)
> вариант перед удалением записей удалить индексы (индексный
> файл) и потом уже их пересоздать заново, на новом наборе
> записей?

Файл сам удалится при удалении последнего индекса, только вот для DELETE они нужны как раз нужны. А для текущей задачи вообще без условия и без индексов удаление, только для DBF в отличии от ADT на место удалённых новые не будут записываться, а будут в конец.


 
Anatoly Podgoretsky ©   (2009-10-29 16:48) [85]

> kyn66  (29.10.2009 16:26:23)  [83]

Такой метод существует, только тебе же удалить все записи, а ты почему то про WHERE завел речь

DELETE {*/ALL} FROM Tbl


 
Anatoly Podgoretsky ©   (2009-10-29 16:49) [86]

> Inovet  (29.10.2009 16:39:24)  [84]

Для полного удаления, как раз индексы не нужны, только лишний тормоз.


 
Inovet ©   (2009-10-29 16:59) [87]

> [86] Anatoly Podgoretsky ©   (29.10.09 16:49)
> > Inovet  (29.10.2009 16:39:24)  [84]
>
> Для полного удаления, как раз индексы не нужны, только лишний
> тормоз.

Я это специально подчеркнул

> [84] Inovet ©   (29.10.09 16:39)
> А для текущей задачи вообще без условия и без индексов удаление

Ещё о временной таблице я говорил имя начинается с "#" будет видна только в текущем соединении.


 
kyn66 ©   (2009-10-29 17:22) [88]


> Anatoly Podgoretsky ©   (29.10.09 16:48) [85]
> > kyn66  (29.10.2009 16:26:23)  [83]Такой метод существует,
>  только тебе же удалить все записи, а ты почему то про WHERE
> завел речь


В данном случае было ответвление небольшое на другую тему [72] Там удаление выполнялось выборочно. Это задета тема касаемо метода DELETE FROM Tbl


 
kyn66 ©   (2009-10-29 17:24) [89]


> Inovet ©   (28.10.09 19:52) [54]
>  Потом под временные лучше временные и применять #Cps1tbl


Пардонс, упустил этот момент. Не слыхал про такой. Подробнее можно?


 
Inovet ©   (2009-10-29 17:35) [90]

> [89] kyn66 ©   (29.10.09 17:24)
>
> > Inovet ©   (28.10.09 19:52) [54]
> >  Потом под временные лучше временные и применять #Cps1tbl
>
> Пардонс, упустил этот момент. Не слыхал про такой. Подробнее
> можно?

Во всём аналогичны обычным таблицам, только видны в текущем Connection, т.е. одно имя можно использовать, например, в сети и не заботиться о конфликтах, хранятся в каталоге %TEMP%, при закрытии соединения все удаляются, имя начинается с #. Не помню в какой версии ADS появились.


 
kyn66 ©   (2009-10-29 17:40) [91]


> Inovet ©   (29.10.09 17:35) [90]


Т.е. имя присваивается компонентту TADsTable?
Типа TADsTable.Name := "#Cps1Tbl" ?


 
kyn66 ©   (2009-10-29 17:49) [92]

Description

CreateTable is used to create a new table defined by the current dataset"s field definitions. If the table already exists, CreateTable will overwrite the table’s data and structure. To avoid overwriting an existing table, check the Exists property before calling CreateTable. If the name of the table begins with the # character, the newly created table will be a temporary table that is only visible on the current connection.

Т.е. получается  что ее можно создать во время работы программы. Да я делал и простое создание с последующим удалением физически с диска. А эта  временная... потом полями ее набивать...


 
Inovet ©   (2009-10-29 17:53) [93]

> [91] kyn66 ©   (29.10.09 17:40)
>
> > Inovet ©   (29.10.09 17:35) [90]
>
>
> Т.е. имя присваивается компонентту TADsTable?
> Типа TADsTable.Name := "#Cps1Tbl" ?

Не, компонент - это обёртка над API.
Examples:

// Create a temporary table named Temp1 with two columns
CREATE TABLE #Temp1 ( Name Char( 30 ), seqid integer );

// Пользуемся
INSERT INTO #Temp1 (Name, seqid) VALUES ("Test 123", 123)

SELECT * FROM #Temp1

// Можно удалить или удалится при закрытии Connection
DROP TABLE #Temp1


Ещё из справки пример

// This example creates two temporary tables for intermediate results
// Step 1. Create a temporary table named DeptCount and at the same time
// populate it with summary data from an existing table in the
// database

SELECT deptnum, count(*) as NumEmployees
INTO #DeptCount
FROM employees
GROUP BY deptnum

// Step 2. Create another temporary table named LocCount which list the
// number of employees in each location for each department.

SELECT deptnum, location, count(*) as cnt
INTO #LocCount
FROM employees
GROUP BY deptnum, location

// Finally using the 2 temporary tables to list the percent of employee
// on each location for each department

SELECT a.deptnum, a.location, ( a.cnt * 100 ) / b.NumEmployees As PercentAtLocation
FROM #LocCount a, #DeptCount b
WHERE a.deptnum = b.deptnum


 
Dennis I. Komarov ©   (2009-10-29 17:55) [94]


> Т.е. имя присваивается компонентту TADsTable?
> Типа TADsTable.Name := "#Cps1Tbl" ?

Суров...


 
kyn66 ©   (2009-10-29 18:00) [95]


> Inovet ©   (29.10.09 17:53) [93]


Да , спасибо, уже сам нашел в хэлпе...



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

Форум: "Начинающим";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.62 MB
Время: 0.011 c
6-1210679150
Андрей
2008-05-13 15:45
2009.12.13
Как получить данные от сервера в ответ на post метод


15-1255893240
Kostafey
2009-10-18 23:14
2009.12.13
SQL: Размышления о хаосе и порядке.


4-1225167683
Danger
2008-10-28 07:21
2009.12.13
ждать завершения explorer


15-1255548568
TIF
2009-10-14 23:29
2009.12.13
Тим Бернерс-Ли признался что // в URL было лишним...


2-1256321201
Zzzz
2009-10-23 22:06
2009.12.13
открытие содерж. blob-поля во врем. файле





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский