Предложение Майкла о запуске собственного экземпляра nbviewer является хорошим, которое я использовал в прошлом с сервером Enterprise Github.
Еще одна облегченная альтернатива - иметь ячейку в конце вашего ноутбука, которая вызывает вызов оболочки для nbconvert, чтобы она автоматически обновлялась после запуска всего этого:
!ipython nbconvert <notebook name>.ipynb --to html
EDIT: с помощью Big Split от Jupyter / IPython вы, вероятно, захотите изменить это на !jupyter nbconvert <notebook name>.ipynb --to html
сейчас.
Как с чем-либо производительность имела отношение Мера
, Проверение плана запросов для второго подхода скажет Вам любые очевидные проблемы заранее (полное сканирование таблицы, когда Вы будете знать, что каждый не нужен), но нет никакой замены для измерения. В производительности sql, тестирующей то измерение, должен быть сделан с соответствующими размерами данных тестирования.
, Так как это - сложный случай, Вы просто не сравниваете два различных способа сделать единый запрос, но сравниваете подход единого запроса с повторяющимся, аспекты Вашей среды могут играть главную роль в фактической производительности.
Конкретно
При помещении формулы в полевую часть сравнения Вы получаете сканирование таблицы .
индекс находится на поле, не на datepart (поле), , таким образом, ВСЕ поля должны быть вычислены - таким образом, я думаю, что Ваша догадка является правильной.
Вы могли сделать что-то подобное этому:
SELECT Sum(someValues)
FROM
(
SELECT *, Year(deliveryDate) as Y, Month(deliveryDate) as M, Day(deliveryDate) as D
FROM table1
WHERE deliveryDate BETWEEN @fromDate AND @ toDate
) t
GROUP BY Y, M, D
Если можно терпеть хит производительности участия уже в еще одной таблице, у меня есть предложение, которое кажется нечетным, но работы, реальные хорошо.
Составляют таблицу, что я назову АЛЬМАНАХ со столбцами как рабочий день, месяц, год. Можно даже добавить столбцы для компании определенные функции даты, как то, является ли дата праздником компании или нет. Вы могли бы хотеть добавить запуск и окончание метки времени, как ссылается ниже.
, Хотя Вы могли бы обойтись одной строкой в день, когда я сделал это, я нашел удобным пойти с одной строкой за смену, где существует три, переключает день на нижний регистр. Даже на том уровне, период десяти лет был только немногим более, чем 10 000 строк.
, Когда Вы пишете SQL для заполнения этой таблицы, можно использовать всю дату, ориентированную созданной в функциях для создания задания легче. Когда Вы идете, чтобы сделать запросы, можно использовать столбец даты в качестве условия объединения, или Вам, возможно, понадобятся две метки времени для обеспечения диапазона для ловли меток времени в диапазоне. Остальная часть его так же легка как работающий с любым другим видом данных.
Я думаю, что необходимо сравнить его для получения надежных результатов, но, по моему скромному мнению, и моя первая мысль был бы то, что разрешение DB заботиться о нем (2-й подход) было бы намного быстрее затем, когда Вы делаете это в своем клиентском коде. С Вашим первым подходом у Вас есть несколько распространений в прямом и обратном направлениях к DB, который я думаю, будет намного более дорогим. :)
Я искал аналогичное решение для создания отчетов о целях и столкнулся с этой статьей, названной Группа к Месяцу (и другие периоды времени) . Это показывает различные пути, хорошие и плохие, для группировки полем даты и времени. Определенно стоящий взгляда на.
Можно хотеть посмотреть на размерный подход (это подобно тому, что Walter Mitty предложил), где каждая строка имеет внешний ключ на дату и/или измерение времени. Это позволяет очень гибкое суммирование через соединение к этой таблице, где эти части предварительно вычисляются. В этих случаях ключ обычно является естественным целочисленным ключом формы YYYYMMDD и HHMMSS, который относительно производителен и также человекочитаем.
Другая альтернатива могла бы быть индексными представлениями, где существуют отдельные выражения для каждой из частей даты.
Или вычисляемые столбцы.
, Но производительность должен быть протестирован, и планы выполнения исследованы...