2017-01-13 11 views
0

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

Я прочитал this question это рекомендация используя DECIMAL() если возможно. Я применил DECIMAL (18, 6), так как мне нужно 6 цифр после десятичной точки. Однако я заметил небольшое снижение скорости запросов.

Есть ли более быстрый тип данных, который я могу использовать вместо float? Как улучшить арифметическую производительность в моей БД?

+0

Я использую SQL Server. – lisovaccaro

+1

Поплавок, вероятно, не очень хороший выбор, если вы заинтересованы в точности, потому что float является приблизительным типом данных, и не все значения будут работать точно. Десятичное число (18,6) - довольно большое десятичное число. Вам они действительно нужны? Это позволяет использовать 12 значащих цифр. Кроме того, тип данных не является ни быстрее, ни медленнее, чем другой. Между ними нет скорости. Это ваш запрос, структура таблицы и индексирование, что приводит к различиям в производительности. Можете ли вы поделиться своим запросом, структурой таблицы и индексами? –

+0

Если вы можете использовать 'decimal (9,6)', вы уменьшите размер своего хранилища с 9 до 5 байтов. – SqlZim

ответ

0

Если вы можете использовать меньший тип данных (например, decimal(9,6)), вы можете увидеть улучшение скорости на большом объеме данных, как вы описали.

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

Если вы умножаете два decimal(18,6) (9 байтов), то полученный вами тип данных будет decimal(37,16) (17 байт).

Если вы умножаете два decimal(9,6) (5 байтов), то полученный вами тип данных будет decimal(19,12) (9 байтов).

Смотрите эту статью на MSDN для полной диаграммы и объяснения: Precision, Scale, and Length (Transact-SQL)

Operations and resulting precision and scale

 Смежные вопросы

  • Нет связанных вопросов^_^