Телеграм

C# Portal | Программирование

@KodBlog Программирование и разработка
РКН: проверяем Не иноагент
Присоединяйтесь к нашему каналу и погрузитесь в мир для C#-разработчика

Сотрудничество, реклама: @devmangx

Работаем с @Spiral_Yuri

РКН: https://clck.ru/3FocB6

Статистика обновлена 15.11.2026 в 09:19 · 1 просмотр страницы · Хотите больше просмотров?

Подписчики13 155 -3 за 1 день
Охват поста1 656 13% от подписчиков
ERR за месяц12,59%
ERR за 24 часа5,52%

Динамика за 30 дней

Рекламные публикации

Рекламных публикаций не найденоЗа последнее время мы не нашли на площадке ни одного рекламного поста.

Последние публикации

Все посты канала →
C# Portal | Программирование tg13 тыс. подписчиков
Открыть пост ↗
Я добавил индекс по дате в таблицу с миллионом комментариев. Запрос, который должен был находить 10 последних комментариев конкретного пользователя, стал почти в 10 раз медленнее.

Время выполнения выросло с 16,5 мс до 241 мс. При этом индекс даже соответствовал сортировке, которую я указал в запросе. Почему стало медленнее?

В моих тестовых данных у пользователя 42 было 10 000 комментариев, и все они были опубликованы как минимум год назад. Индекс по дате сначала выводил новые комментарии всех остальных пользователей.

В итоге Postgres пришлось пропустить 495 944 строки, прежде чем найти нужные десять.

Я изменил индекс на (user_id, created_at DESC). Теперь комментарии пользователя 42 находятся рядом друг с другом и отсортированы от новых к старым.

Postgres прочитал всего 10 записей и остановился. 0,067 мс
— новое время выполнения запроса.

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

Вот три плана выполнения запросов и тестовые данные, чтобы вы могли самостоятельно проверить результат: Разбор с примерами и планами запросов

👉 @KodBlog
👁 377 ❤ 3 ↻ 2 вчера в 16:07
C# Portal | Программирование tg13 тыс. подписчиков
Открыть пост ↗
Представьте, что вы разрабатываете приложение для продажи билетов. Покупатель переходит к оформлению заказа, но в запросе нет ID корзины. Где разместить правило валидации, которое отклонит такой запрос?

Я размещаю его рядом с кодом, который создаёт заказ. Приложение поставляется как единое целое. Внутри него модуль Ticketing отвечает за корзины и заказы. Для оформления заказа я создаю отдельную папку SubmitOrder. Добавление билета в корзину — другая задача, поэтому для неё будет своя папка.

Для небольшой функциональности оформления заказа достаточно одного C#-файла. Открываете SubmitOrder.cs и можете проследить весь путь запроса сверху вниз. Если ID корзины пустой, возвращается HTTP 400. Если ID корректный, обработчик ищет корзину и, если находит её, сохраняет заказ.

Когда файл становится слишком большим, я выношу правило проверки ID корзины в SubmitOrderValidator.cs — в ту же папку. Разработчик, который исправляет оформление заказа, сразу знает, где искать нужный код.

В этом и заключается преимущество Vertical Slice Architecture. Папка показывает, какое действие может выполнить покупатель. При этом я могу разделить код на пять файлов, не теряя этой структуры.

Вот тот же код с двумя вариантами организации папок: подробнее

👉 @KodBlog
👁 832 🍾 1 ↻ 5 вчера в 06:07