Я разрабатываю высокочастотное торговое приложение с использованием C#, платформы .NET 3.5 и SQL Server 2008 R2. Я подписываюсь на 70 инструментов, для каждого инструмента я храню 1 минуту баров. Каждый стержень для каждого инструмента состоит из Open Price
, High Price
, Low Price
, Close Price
, Volume
.C# код и сравнение производительности хранимых процедур SQL Server 2008
Я нажимаю все одноминутные бары для каждого инструмента в одной общей таблице, где первичный ключ StockID
.
Теперь для некоторых расчетов. Мне нужно будет построить 5-минутные бары, 10-минутные бары, 15-минутные бары и т. Д. С 1-минутных баров. Пример: я буду зацикливаться на последних 5 строках с 1 минутами и построить 1-й бар с размером бара = 5 мин. И в течение этого 5-минутного бара мне нужно будет найти Open Price
, High Price
, Low Price
, Close Price
, Volume
. Точно так же мне понадобятся 180, 5 мин. Баров. Итак, мне понадобится 180 * 5 = 900 рядов 1 мин. Баров. (От 900, я построю 180 строк каждый 5 минут)
Если я сделать простое Выбрать заявление от C# код, чтобы получить все 900 один минутные данные, а затем цикл и создать 180 данных с 5 мин бара в мой код C# и в каждом 5-минутном баре получают открытую цену, высокую цену, цену закрытия, объем.
Или, я пишу SQL-хранимую процедуру, чтобы сделать то же самое выше и вернуть открытую цену, высокую цену, низкую цену, цену закрытия, объемы для всех 180 данных с 5-минутными барами до кода C#.
Мой вопрос, который будет намного быстрее 1) или 2) и которая будет более надежной 1) или 2)
Надежды, я обрамление моего вопроса и сценария подробно для экспертов веди меня.
По моему опыту, хранимые процедуры выполняются намного быстрее, потому что он повторно увеличивает количество запросов между серверами. – Mathieu
Другой вопрос «измерьте сами». По крайней мере, вы спрашиваете о ремонтопригодности. – Marc
Это зависит от многих переменных - скорости клиента, скорости сервера, латентности сети, количества данных, индексов, качества s'proc. Тебе нужно проверить это самостоятельно. – Phil