Salim Hoseini Ответов: 1

Как я могу оптимизировать количество сообщений за последнюю неделю или месяц в коде и запросах?


I have a database with many records from members that each member creates posts for themselves. I want to show daily, weekly, monthly and yearly created posts for each user. What is the best and most effective way to do this? best query and optimize code. Use caching system?
What data structure should I use?
My Database is SQL Server and code behind is C#


Что я уже пробовал:

оптимизация кода и запросов

1 Ответов

Рейтинг:
2

OriginalGriff

Вы уже определились со "структурой данных", выбрав базу данных! Он основан на таблице, столбце и строке, поэтому ваша структура будет достаточно плоской.

- Я? У меня была бы таблица для пользователей и отдельная таблица для сообщений, которая включает в себя внешний ключ к таблице пользователей. А в таблице Posts будет просто столбец timestamp, который позволяет вашим запросам извлекать пользовательские записи за любой период времени, который вы можете пожелать.


Salim Hoseini

По вашему методу мне нужно получить всю базу данных для 4 запросов в день, еженедельно, ежемесячно и ежегодно, что не является оптимальным.

Richard Deeming

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

Суммирование данных с помощью оператора группирования наборов - простой разговор[^]

SELECT
    YEAR(PostDate) AS PostYear,
    MONTH(PostDate) AS PostMonth,
    DAY(PostDate) As PostDay,
    COUNT(1) As NumberOfPosts
FROM
    UserPosts
WHERE
    UserID = @UserID
GROUP BY
    GROUPING SETS
    (
        YEAR(PostDate),
        (YEAR(PostDate), MONTH(PostDate)),
        (YEAR(PostDate), MONTH(PostDate), DAY(PostDate))
    )
;