У нас есть две таблицы, в которых хранится геометрия полигона. Я хотел бы получить полигоны, присутствующие в одной таблице, и не присутствовать в другой таблице. На данный момент я делаю левое внешнее соединение и используя STAsText(), но это занимает много времени. FYI. У нас есть 120 миллионов полигонов в обеих таблицах. Есть ли быстрый способ получения? (может быть, используется пространственное индексирование, я не знаю об этом).Самый быстрый способ сравнения типов геометрии полигонов
FYI, я использую SQL Server 2012
Данных в этой таблице нет. Это команда, которую я использую для сравнения. выберите newPolygon. * Из table1 newPolygon слева присоединиться table2 oldPolygon на newPolygon.Shape.STAsText() = oldPolygon.Shape.STAsText() где oldPolygon.Shape является нулевым – ABCDEFG
Вы должны иметь индекс, если вы пытаетесь улучшить время отклика. Можно ли создать индекс, затем запустить ваш запрос выбора, а затем удалить индекс? – Kartic
Эта форма проверки «LEFT OUTER JOIN» - это способ проверки значений в одной таблице, которые не находятся в другом, поскольку я нашел, что это быстрее, чем использование «EXCEPT» или «NOT IN()» и других альтернатив. Я не очень хорошо знаком с типом данных географии, поэтому я не уверен, сколько пространственных индексов вам поможет; они должны сделать некоторое улучшение. Попытайтесь удалить любые значения NULL перед индексированием, если вы это сделаете, поскольку я, кажется, помню, что есть проблема с производительностью с NULL в пространственных индексах. –