Автоаудит — это когда кто-то где-то что-то поменял, и в специальную табличку (в моём случае — почти каждая таблица с данными имеет свою собственную таблицу аудита) пишется, кто, что и когда. Можно сделать триггерами, но, во-первых, триггеров нужно катастрофически много, во-вторых — сложно определить юзера.
CTE — это такая фича T-SQL, когда можно в рамках запроса объявить что-то вроде вьюшки и потом пользоваться ей. В духе
WITH someCTE AS (
SELECT a, b FROM (
SELECT a, b FROM table1
UNION
SELECT a, b FROM table2
) un LEFT JOIN table3 t3 ON (t3.a = un.a)
)
SELECT c
FROM table4
LEFT JOIN someCTE cte on (cte.a = table4.c)
LEFT JOIN (
SELECT * FROM table5 INNER JOIN someCTE cte ON (cte.a = table5.a)
)
-- любая другая хтонь
Оконные функции — такая штука, позволяющая агрегировать (и делать некоторые другие вещи) данные без группировок. Или, например, опираться на значение из нескольких строк. Скользящие средние, номера строк внутри групп, средние/суммы/чтоУгодноЕщё по группам,… you name it.
Инлайнинг — это когда вьюшка подставляется в запрос путём собственно вставки её текста в подзапрос. Зачем?
Допустим, у нас есть некоторая очень тяжёлая вьюшка, которую нельзя проиндексировать (лефт джойны, недетерминированные функции, таблицы из разных баз, да что угодно). При этом на неё накладываются достаточно жёсткие условия, уменьшающие её на несколько порядков:
SELECT * FROM matters m
LEFT JOIN view1 vw ON (vw.matterId = m.id)
WHERE vw.UserId = 150
Часто можно это самое условие наложить где-нибудь внутри:
SELECT * FROM matters m
LEFT JOIN (SELECT * FROM users /*много-много джойнов*/ WHERE vw.UserId = 150) vw -- текст вьюшки
ON (vw.matterId = m.id)
И получить эти самые порядки прироста производительности. Table-valued функции при этом использовать не представляется возможным, потому что фильтры заранее неизвестны.
«железо» — это как раз силовая часть, «жесть» (обшивка) понятное дело вторична.
Не всегда можно вот так на глаз определить, что стойка — пластилин, или что лонжероны сдвинуты, например.
И, в отличие от стуканувшего движка, это даже за 75% стоимости (где ж замена двигателя столько стОит-то?) не лечится.
Как раз кузов — главное, на что стоит смотреть, если стоит цель купить конкретную машину. Двигатель, коробка и прочее оцениваются уже только при равно целом железе — всё, кроме кузова, можно отремонтировать/заменить.
Если же вопрос стоит как «что-нибудь по цене Х» — тогда да, кузов не критичен.
А заодно со своими возможностями, некоторыми из которых в EF не пахнет.
Сделать действительно всеобъемлющий ORM невозможно в силу принципиальной разности концепций, всегда что-то приносится в жертву.
Упаси боги кто-то прислушается и сделает интерфейс голосовым.
Лучше графики для вывода не может быть ничего — зрение это вообще основной канал связи мозга с миром.
Ввод это отдельная тема споров, но голосовой катастрофически медленен. Лучше клавиатуры лично я вижу только прямой нейроинтерфейс, но до этого ещё ооой как далеко…
Ох, не бередьте душу. Пятый винмобайл я до сих пор считаю лучшей мобильной ОС, которой что гуглы с огрызками, что современная винда даже в подмётки не годятся.
> Уже очень скоро у вас будет утрачена возможность использовать свой хост.Net и выбирать версионность, дату апгрейда, кастомные настройки. Вместо этого вам будет предоставлена шикарная альтернатива: only current .Net в облаке Azure.
Максимально тонкая (0.5-2 мм) форма из АБС и медные радиаторы через термопрокладку на половины формы позволяют сделать три-пять отливок из олова, а Розе можно лить даже без радиатора (но тогда форму лучше помассивнее делать). Ниже пишут про РС, но с ним не экспериментировал.
Не то, чтобы это имело практический смысл, но технически возможно.
CTE — это такая фича T-SQL, когда можно в рамках запроса объявить что-то вроде вьюшки и потом пользоваться ей. В духе
Оконные функции — такая штука, позволяющая агрегировать (и делать некоторые другие вещи) данные без группировок. Или, например, опираться на значение из нескольких строк. Скользящие средние, номера строк внутри групп, средние/суммы/чтоУгодноЕщё по группам,… you name it.
Инлайнинг — это когда вьюшка подставляется в запрос путём собственно вставки её текста в подзапрос. Зачем?
Допустим, у нас есть некоторая очень тяжёлая вьюшка, которую нельзя проиндексировать (лефт джойны, недетерминированные функции, таблицы из разных баз, да что угодно). При этом на неё накладываются достаточно жёсткие условия, уменьшающие её на несколько порядков:
Часто можно это самое условие наложить где-нибудь внутри:
И получить эти самые порядки прироста производительности. Table-valued функции при этом использовать не представляется возможным, потому что фильтры заранее неизвестны.
Не всегда можно вот так на глаз определить, что стойка — пластилин, или что лонжероны сдвинуты, например.
И, в отличие от стуканувшего движка, это даже за 75% стоимости (где ж замена двигателя столько стОит-то?) не лечится.
Если же вопрос стоит как «что-нибудь по цене Х» — тогда да, кузов не критичен.
Сделать действительно всеобъемлющий ORM невозможно в силу принципиальной разности концепций, всегда что-то приносится в жертву.
Лучше графики для вывода не может быть ничего — зрение это вообще основной канал связи мозга с миром.
Ввод это отдельная тема споров, но голосовой катастрофически медленен. Лучше клавиатуры лично я вижу только прямой нейроинтерфейс, но до этого ещё ооой как далеко…
В чьём воспалённом воображении?
(серьёзно)
Не то, чтобы это имело практический смысл, но технически возможно.