Я не использовал геометрию типа данных, и никогда не было причин, чтобы прочитать на нем. Несмотря на это, мне кажется, что если вы просто выполняете базовую арифметику на простом геометрическом объекте, обычные старые типы данных 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. (a) Zounds! (b) Круто! Просмотрите записи в разделе «Справочник по типу данных геометрии» (online here, но вы хотите посмотреть расширенное древовидное представление в этой записи.) Если это тот тип функциональности, который вам понадобится, обязательно используйте тип данных геометрии, но для простой обработки я придерживался типов данных knucklescraper.
Похоже, что у вас есть достаточно информации, чтобы иметь возможность создавать репрезентативные данные и запросы и определять, какая из них лучше - мы этого не делаем. Вопросы производительности в целом не отвечают в реферате. –
@Damien_The_Unbeliever, я согласен, что на конкретные вопросы производительности нужно отвечать в их конкретном контексте, но я думаю, что сравнение скорости работы с двумя разными типами является достаточно общим для этого вопроса. Можно было бы оправдаться, говоря: «В общем, быстрее быстрее запрашивать столбец' int', чем '' varchar (255) 'column, и я действительно не вижу, как это отличается. – smartcaveman
В основном, потому что я понятия не имею *, что * вы планируете хранить в этих 4 десятичных столбцах - вы начали с разговоров о четырехстороннем - если бы я собирался хранить один как десятичный знак, я бы подумал, что буду сохраняя 4 координаты, поэтому потребуется 8 столбцов. У вас, очевидно, есть какой-то дизайн, который означает, что 4 столбца будут работать для вашей конкретной ситуации, но я не знаю, что это за дизайн ... –