Группа SQL к году, месяцу, неделе, дню, SQL часа по сравнению с процедурной производительностью

Предложение Майкла о запуске собственного экземпляра nbviewer является хорошим, которое я использовал в прошлом с сервером Enterprise Github.

Еще одна облегченная альтернатива - иметь ячейку в конце вашего ноутбука, которая вызывает вызов оболочки для nbconvert, чтобы она автоматически обновлялась после запуска всего этого:

!ipython nbconvert <notebook name>.ipynb --to html

EDIT: с помощью Big Split от Jupyter / IPython вы, вероятно, захотите изменить это на !jupyter nbconvert <notebook name>.ipynb --to html сейчас.

22
задан RSlaughter 27 January 2009 в 10:36
поделиться

7 ответов

Как с чем-либо производительность имела отношение Мера

, Проверение плана запросов для второго подхода скажет Вам любые очевидные проблемы заранее (полное сканирование таблицы, когда Вы будете знать, что каждый не нужен), но нет никакой замены для измерения. В производительности sql, тестирующей то измерение, должен быть сделан с соответствующими размерами данных тестирования.

, Так как это - сложный случай, Вы просто не сравниваете два различных способа сделать единый запрос, но сравниваете подход единого запроса с повторяющимся, аспекты Вашей среды могут играть главную роль в фактической производительности.

Конкретно

  1. 'расстояние' между Вашим приложением и базой данных как задержка каждого вызова будет напрасно тратиться время по сравнению с одним большим подходом запроса
  2. , Используете ли Вы подготовленные операторы или не (порождение дополнительного усилия по парсингу для механизма базы данных на каждом запросе)
  3. , запрашивает ли конструкция диапазонов себя, является дорогостоящим (в большой степени под влиянием 2)
9
ответ дан ShuggyCoUk 29 November 2019 в 05:21
поделиться

При помещении формулы в полевую часть сравнения Вы получаете сканирование таблицы .

индекс находится на поле, не на datepart (поле), , таким образом, ВСЕ поля должны быть вычислены - таким образом, я думаю, что Ваша догадка является правильной.

6
ответ дан Galwegian 29 November 2019 в 05:21
поделиться

Вы могли сделать что-то подобное этому:

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
5
ответ дан Mladen Prajdic 29 November 2019 в 05:21
поделиться

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

Составляют таблицу, что я назову АЛЬМАНАХ со столбцами как рабочий день, месяц, год. Можно даже добавить столбцы для компании определенные функции даты, как то, является ли дата праздником компании или нет. Вы могли бы хотеть добавить запуск и окончание метки времени, как ссылается ниже.

, Хотя Вы могли бы обойтись одной строкой в день, когда я сделал это, я нашел удобным пойти с одной строкой за смену, где существует три, переключает день на нижний регистр. Даже на том уровне, период десяти лет был только немногим более, чем 10 000 строк.

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

5
ответ дан Walter Mitty 29 November 2019 в 05:21
поделиться

Я думаю, что необходимо сравнить его для получения надежных результатов, но, по моему скромному мнению, и моя первая мысль был бы то, что разрешение DB заботиться о нем (2-й подход) было бы намного быстрее затем, когда Вы делаете это в своем клиентском коде. С Вашим первым подходом у Вас есть несколько распространений в прямом и обратном направлениях к DB, который я думаю, будет намного более дорогим. :)

1
ответ дан Frederik Gheysels 29 November 2019 в 05:21
поделиться

Я искал аналогичное решение для создания отчетов о целях и столкнулся с этой статьей, названной Группа к Месяцу (и другие периоды времени) . Это показывает различные пути, хорошие и плохие, для группировки полем даты и времени. Определенно стоящий взгляда на.

2
ответ дан jimueller 29 November 2019 в 05:21
поделиться

Можно хотеть посмотреть на размерный подход (это подобно тому, что Walter Mitty предложил), где каждая строка имеет внешний ключ на дату и/или измерение времени. Это позволяет очень гибкое суммирование через соединение к этой таблице, где эти части предварительно вычисляются. В этих случаях ключ обычно является естественным целочисленным ключом формы YYYYMMDD и HHMMSS, который относительно производителен и также человекочитаем.

Другая альтернатива могла бы быть индексными представлениями, где существуют отдельные выражения для каждой из частей даты.

Или вычисляемые столбцы.

, Но производительность должен быть протестирован, и планы выполнения исследованы...

1
ответ дан Cade Roux 29 November 2019 в 05:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: