Какова относительная производительность 1 столбца геометрии по сравнению с 4 десятичными в Sql Server 2008? - PullRequest
1 голос
/ 19 февраля 2012

Мне нужно представить размеры куска четырехугольной поверхности прямоугольника в базе данных SQL Server 2008.Мне нужно будет выполнять запросы на основе расстояния между различными точками и общей площадью поверхности.

Будет ли моя производительность лучше, если использовать тип данных геометрии или 4 десятичных столбца?

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

Ответы [ 3 ]

1 голос
/ 02 марта 2012

Я не использовал тип данных геометрии, и у меня никогда не было причин читать его. Тем не менее, мне кажется, что если вы просто выполняете базовую арифметику на простом геометрическом объекте, обычные старые типы данных SQL должны быть достаточно эффективными, особенно если вы добавляете некоторые вычисляемые столбцы для часто используемых вычислений.

Например:

--DROP TABLE MyTable
CREATE TABLE MyTable
 (
   X1  decimal  not null
  ,Y1  decimal  not null
  ,X2  decimal  not null
  ,Y2  decimal  not null
  ,Area as abs((X2-X1) * (Y2-Y1))
  ,XLength as abs((X2 - X1))
  ,YLength as abs((Y2 - Y1))
  ,Diagonal as sqrt(power(abs((X2 - X1)), 2) + power(abs((Y2 - Y1)), 2))
 )

INSERT MyTable values (1,1,4,5)
INSERT MyTable values (4,5,1,1)
INSERT MyTable values (0,0,3,3)

SELECT * from MyTable

Ужасные вычисления, но они не будут выполняться до тех пор, пока на них фактически не будут ссылаться (или если вы не решите их проиндексировать). У меня нет статистики, но выполнение тех же операций через тип данных Geometry , вероятно, означает доступ к редко используемым математическим подпрограммам, возможно, встроенным в системные CLR-сборки, и я просто не вижу, что это происходит значительно быстрее, чем обычные. арифметические подпрограммы SQL костей.

Я только что посмотрел в BOL на тип данных Geometry. (а) Зундс! (б) Круто! Проверьте записи в «Справочнике по методам типов данных geomety» ( онлайн здесь , но вы хотите посмотреть расширенное древовидное представление под этой записью.) Если вам нужна такая функциональность, то все значит использовать тип данных Geometry, но для простой обработки я бы придерживался типов данных knucklescraper.

0 голосов
/ 19 февраля 2012

типы данных геометрии более сложны, чем простые десятичные дроби, поэтому просто накладные расходы.Но они предоставляют функции, которые вычисляют расстояние между двумя точками, и я бы предположил, что они были оптимизированы.Вопрос может заключаться в том, что вы внедрили логику расстояния между точками - это заняло бы больше времени, чем получение данных в соответствующем формате в первую очередь.

Поскольку каждый вопрос БД может относиться к соотношению вставок v select / calc

0 голосов
/ 19 февраля 2012

Geometry тип данных - Пространственный, а decimal - нет,

Пространственные и непространственные данные

Пространственные данные включают местоположение, форму, размер и ориентацию. Например, рассмотрим конкретный квадрат: его центр (пересечение его диагоналей) определяет его местоположение его форма представляет собой квадрат длина одной из его сторон определяет его размер угол, по которому его диагонали составляют, скажем, ось x, указывает его ориентацию. Пространственные данные включают пространственные отношения. Например, расположение десяти кегельбанов является пространственными данными.

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

Можно игнорировать различие между пространственными и непространственными данными. Однако между ними есть принципиальные различия: пространственные данные обычно многомерны и автокоррелированы. непространственные данные обычно являются одномерными и независимыми.

Эти различия помещают пространственные и непространственные данные в различные философские лагеря, что имеет далеко идущие последствия для концептуальных проблем, задач обработки и хранения. Например, сортировка, возможно, является наиболее распространенной и важной функцией обработки непространственных данных, которая выполняется. Не очевидно, как даже отсортировать данные о местоположении так, чтобы все точки оказались «рядом»? их ближайшие соседи.

Эти различия оправдывают раздельное рассмотрение пространственных и непространственных моделей данных. Это устройство ограничивает свое внимание последним, если не указано иное.

Вот еще немного, если вам интересно: http://www.ncgia.ucsb.edu/giscc/units/u045/u045_f.html

Вот ссылка, которую я нашел о сравнительном анализе хранилищ пространственных данных: http://hpc.ac.upc.edu/Talks/dir08/T000327/paper.pdf

...