Хорошо, попробуем поставить какой-то заказ.
Во-первых, не рекомендуется физически сортировать стол. На самом деле большинство RDBMS даже не предоставляют вам эту функцию. Как правило, один, чтобы не форсировать полное сканирование таблицы (оно называется иногда естественным сканированием) создает индексы в полях таблицы, на которых он считает, что таблица будет сортироваться/искать.
Как вы видите, первым шагом для сортировки таблицы обычно является создание индекса. Это отдельный шаг, это делается один раз, обычно на, скажем, «время разработки». После этого механизм БД позаботится о том, чтобы автоматически обновлять индексы.
Индекс создание сделано Вами (разработчик) с использованием (обычно) не Delphi (или любой другой инструмент разработки), но инструмент администратора вашей RDBMS (тот же самый инструмент, который вы использовали при создании таблицы) ,
Если ваш «БД-движок» - это, по сути, набор данных памяти Delphi (TClientDataSet), то вы перейдете к свойству IndexDefs
, откройте его, добавьте новый индекс и установите соответствующие свойства. Интересное свойство в нашем обсуждении - Fields
. Установите его на Payee;Payer
. Установите также Name
, например. "IdxPayee". Если вы используете другого потомка TDataSet, обратитесь к документам вашего механизма БД или задайте еще один вопрос здесь, на SO.com, в котором указаны подробности.
Теперь, чтобы использовать с индексом. (IOW, до сортировка стол, как вы говорите). В вашей программе (либо во время разработки, либо во время выполнения) установите в своей таблице «IndexName
» «idxPayee» или любое другое действительное имя, которое вы указали, или установите IndexFieldNames
на Payee;Payer
.
Обратите внимание еще раз, что приведенный выше пример основан на TClientDataSet. То, что вы должны сохранить из вышеизложенного (если вы его не используете), состоит в том, что вы должны иметь уже созданный индекс, чтобы использовать его.
Кроме того, чтобы ответить на ваш вопрос, да, есть некоторые виды «таблица» (TDataSet потомков в терминологии Delphi), которые поддерживают сортировку, либо с помощью метода Sort
(или тому подобное), либо с помощью SortFields
собственности.
Но в настоящее время, как правило, при работе с SQL-сервером предпочтительным решением является создание индексов с использованием соответствующего инструмента администрирования, а затем выпуск (с использованием Delphi) SELECT * FROM myTable ORDER BY Field1
.
НТН
Я ценю все ответы, которые предлагают различные индексы. Я попробовал их все.
Мой вопрос в том, как легко, физически сортировать таблицу. – ChuckO
Какую библиотеку вы используете для работы с таблицей DBF? –
Я использую BDE – ChuckO