Я не знаю, лучше ли использовать временные таблицы в SQL Server или использовать DataTable в C# для отчета. Вот объем отчета: он будет скопирован в рабочую книгу с примерно 10 рабочими листами - каждый лист, содержащий около 1000 строк и около 30 столбцов, поэтому много данных. Есть несколько рекомендаций, но я не мог найти ничего конкретного относительно объема данных, который слишком много для DataTable. Согласно https://msdn.microsoft.com/en-us/library/system.data.datatable.aspx, 16M строк, но мой набор данных кажется громоздким, учитывая количество столбцов, которые у меня есть. Кроме того, мне придется либо сделать несколько SQL-запросов для сбора данных в моем отчете, либо попытаться записать хранимую процедуру в SQL для сбора этих данных. Как мне понять это затруднение?Когда использовать временные таблицы SQL vs DataTables
ответ
Мое эмпирическое правило состоит в том, что если его можно обработать на сервере базы данных, это, вероятно, должно произойти. Имейте в виду, независимо от того, насколько эффективен ваш код на C#, SQL Server будет в большей степени скорее работать с ним быстрее и эффективнее, ведь он был разработан для обработки данных.
Нет никакого позора в использовании таблиц #temp. Они поддерживают статистику, могут быть проиндексированы и/или манипулировать. Один недавний пример: разработчик создает, по общему признанию, изящный запрос с использованием cte, производительность составляла 12-14 секунд против моей в 1 секунду с использованием #temps.
Теперь одна тщательно структурированная хранимая процедура может производить и возвращать 10 наборов данных для ваших рабочих листов. Если вы используете такой продукт, как SpreadSheetLight (есть много доступных опций), это становится небольшим вопросом передачи результатов и создания вкладок (без циклов клеточного уровня ... если вы не хотите или не хотите).
Я также хотел бы добавить, что вы можете значительно сократить количество точек касания и лучше обеспечить соблюдение бизнес-логики, сделав SQL Server тяжелым грузом. Например, клиент представил рейтинг риска 6 Вт, который был по существу равным 6.5. Сотни устаревших отчетов должны были обновляться, а мне нужно было добавить 6W в таблицу сопоставления.
+1 - Только на прошлой неделе у меня был опыт рефакторинга кучей общих табличных выражений в пару таблиц #temp с подключением. Я получил показатель около пятидесяти в производительности и сократил конкуренцию на моем занятом SQL Server. В этом была очень полезной возможность индексирования большой таблицы temp. –
@OllieJones Это отличное чувство, когда вы получаете такие результаты. Несколько лет назад, что займет 14 часов на мэйнфрейме, заняло 6 минут в VFP на ПК. Если бы Аудит знал, что я делаю, они бы вырвали мое сетевое соединение со стены. –
Здесь много недостающего контекста - как этот отчет будет доступен и запущен? Это будет работать как сценарий каждый день?
Вы считаете SSRS?
На мой взгляд, лучше всего отвлечь свою бизнес-логику, создав в базе данных Views или Хранимые процедуры. Хранимые процедуры, вероятно, будут способом, но это действительно зависит от вашей конкретной среды. Затем вы можете указать, какие инструменты вы хотите использовать в объекте базы данных. Это имеет ряд преимуществ:
, если вы в конечном итоге, имеющие различные версии или различные форматы отчета, и ваша логика когда-либо изменения, вы можете обновить логику в одном месте, а не много.
ваш код проще и чист, как правило:
select v.col1, v.col2, v.col3 from MY_VIEW v where v.date between @startdate and @enddate
Я предполагаю, что ваши 10 электронных таблиц будут что-то вроде
Резюме Страницы | Отдел 1 | Отдел 2 | ...
Таким образом, вы можете создать обобщенный вид или SP, создать главную электронную таблицу, связанную с объектом db, которая вытаскивает все соответствующие данные из SQL и использует сводные таблицы или фильтры или что-то еще, что вы хотите, и используйте это для создания ваших копий, которые будут отправлены.
Но прежде чем идти на все эти проблемы, я бы не стал уверенным, что SSRS не вариант, потому что, если вы можете использовать это, у него есть много испеченных функциональных возможностей, которые облегчат вашу жизнь (экспорт в Excel, автоматический параметры даты, запланированное выполнение, подписки на электронную почту и т. д.).
Это ежедневный отчет за последние 30 дней. Вы правы в своих предположениях о таблицах. Спасибо за ваши мысли. Я буду более подробно разбираться в SSRS. Я не понимал, что у него столько интегрированной функциональности. – Missy
- 1. Временные таблицы Dynamic Sql VS
- 2. Sql Вложенные временные таблицы
- 3. Как использовать временные таблицы в SQL
- 4. phpMyAdmin SQL - Временные таблицы
- 5. Временные таблицы в sql-сервере?
- 6. Временные таблицы SQL Server 2005
- 7. Полезно ли использовать временные таблицы?
- 8. MS SQL Временные таблицы зацикливание
- 9. Стойкие временные таблицы в SQL?
- 10. Временные таблицы в Postgres Sql
- 11. Временные таблицы SQL-сервера против курсоров
- 12. Когда следует использовать временные переменные?
- 13. могут таблицы один использовать временные в Teradata
- 14. Временные интервалы в SQL DATE vs java.sql.Date
- 15. StopWatch vs Timer - Когда использовать
- 16. Временные таблицы или переменные производительности SQL Server
- 17. Параллельно загружайте временные таблицы
- 18. Создает ли этот SQL-запрос временные таблицы?
- 19. Создал временные таблицы динамически
- 20. Временные таблицы Entity Framework и таблицы SQL Server
- 21. Где временные таблицы в SQL Server
- 22. SQL Server Присоединяйтесь временные таблицы и Pivot
- 23. SQL Server/Oracle: Частные временные таблицы
- 24. Временные таблицы и репликация SQL Server
- 25. sql server bulk insert и временные таблицы
- 26. Глобальные временные таблицы в SQL Server
- 27. Удалить временные таблицы с Apache SQL Спарк
- 28. Временные таблицы и транзакции в sql 2005
- 29. Где хранятся временные таблицы в sql-сервере?
- 30. Временные таблицы SQL Server через MS Access
«Как мне понять это затруднение?» - используйте ощущение кишки и выберите наиболее понятное и доступное решение. Если он окажется слишком медленным, вы можете попробовать что-то другое. Самая важная часть - получить что-то правильно, а затем беспокоиться о скорости. – Tony