|
|
|
MS SQL индексы с позиции Delphi
|
|||
|---|---|---|---|
|
#18+
Правильно ли я понимаю, что Индекс с позиции Delphi - это обычный TList<Record>, где Record - набор столбцов таблицы. Я говорю про кластеризованный индекс. То есть сюда добавляется еще сортировка. Или все сильно отличается от структуры TList? Может это ближе к Array? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 23:55 |
|
||
|
MS SQL индексы с позиции Delphi
|
|||
|---|---|---|---|
|
#18+
X-Cite https://msdn.microsoft.com/ru-ru/library/ms177443(v=sql.90).aspx Да, но я немного про другое. Там все описано абстрактно - страницы, секции и тд. А мне хотелось бы понять с позиции памяти. С позиции хранения данных в памяти (диск или ОП). Если бы можно было описать сбалансированное дерево как некую совокупность TList<Data>, то как бы это было? Ну в самом простом варианте. Как бы осуществлялся доступ программно по индексу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 01:44 |
|
||
|
MS SQL индексы с позиции Delphi
|
|||
|---|---|---|---|
|
#18+
rgreat https://www.freepascal.org/docs-html-3.0.0/fcl/avl_tree/tavltree.html Спасибо. Правда нет реализации, только интерфейс описан. Я хотел понять, на сколько сильно в плане памяти отличается вставка последовательного ключа в кластерный индекс и произвольного. На примере TList как сортированного списка я это понимаю довольно линейно. В первом случае просто в конец списка, во втором - с поиском и со сдвигом памяти. Со сбалансированными деревьями все похоже не так линейно... Или так же линейно (с позиции памяти) - то есть производится ли реорганизация памяти (и в каком объеме) при реорганизации Б-дерева индекса в обоих случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 02:19 |
|
||
|
MS SQL индексы с позиции Delphi
|
|||
|---|---|---|---|
|
#18+
_Промешан_, тут есть тема (с картинками и кодом) про индексы, правда в формате CDX, но вдруг интересно: http://www.sql.ru/forum/686605-a/algoritm-sozdaniya-cdx-faylov ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 14:50 |
|
||
|
MS SQL индексы с позиции Delphi
|
|||
|---|---|---|---|
|
#18+
_Промешан_, Там модуль указан. Можно поискать в интернетах. Если ставить не хочется. Что нашлось: https://searchcode.com/codesearch/view/5157125/ https://github.com/graemeg/freepascal/blob/master/packages/fcl-base/src/avl_tree.pp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2018, 00:25 |
|
||
|
MS SQL индексы с позиции Delphi
|
|||
|---|---|---|---|
|
#18+
_Промешан_, вам надо почитать Вирта про обычные b-деревья, которые хранятся на диске (страничная организация). Кластерный индекс, собственно, это обычный индекс, только у него вместо ссылки на запись вместе с ключом хранится сама запись. Вот и вся разница. И еще - индексы в базах данных, как правило всегда сбалансированы. Редко бывает, чтобы ключ со страницы указателей, а не с листовой, указывал на запись, а не на конечный ключ в листовой странице. Индексы БД практически никогда не загружаются в память целиком, и не конвертируются из страничных в какую-то "организацию в памяти". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2018, 10:50 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39615427&tid=2041144]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 412ms |

| 0 / 0 |
