.net - 从数据库中显示用户数量的最快方法?

标签 .net mysql

我正在从我的用户表中执行 COUNT(userid) 并在网站上显示数字,但我想知道是否有任何其他更好的方法来获取、存储和显示此信息,而不是进行一次连接和 COUNT()每次访问者加载网页时从数据库中提取?

编辑: 我刚刚在 MSDN 上找到了有关缓存的信息,这似乎是执行此操作的绝对最佳方法,感谢 TomTom!

ASP.NET Caching .NET 4.0

如果我想用我数据库中的 MembersCount 填充 cachedString,这是正确的方法吗?

    string cachedString;
    cachedString = (string)Cache["CacheItem"];
    if (cachedString == null)
    {
    MySqlConnection Connection = siteStuff.GetConnection();
    MySqlCommand c = new MySqlCommand("SELECT COUNT(id) as TheCount FROM user", Connection);
    Connection.Open();
    MySqlDataReader reader = c.ExecuteReader();
    reader.Read();
    cachedString  = reader["TheCount"].ToString();
    Connection.Close();
    Connection.Dispose();
    Cache.Insert("CacheItem", cachedString);thanks TomTom!

编辑:我目前正在使用此代码:

    int cacheNumberUsers;
    cacheNumberUsers = (int)Cache["MembersCount"];
    if (cacheNumberUsers == null)
    {
        cacheNumberUsers = siteStuff.GetNumberUsers();
        Cache.Insert("MembersCount", cacheNumberUsers);
    }
    nrRegMembers.Text = cacheNumberUsers.ToString();

但是我得到了错误:

System.NullReferenceException: Object reference not set to an instance of an object.

在线:

cacheNumberUsers = (int)Cache["MembersCount"];

编辑: 我想我需要先将项目插入缓存吗?

Cache.Insert("MembersCount");

但是我把这段代码放在哪里有关系吗?换句话说,我是否应该将它放在 OnLoad 中以便它在每次页面请求时触发?还是我应该先检查它是否存在?

最佳答案

不要将非数据库问题变成数据库问题。

如:生成页面的缓存输出。使用.NET?使用输出缓存/部分输出缓存返回可能每分钟生成一次的旧 sql。

在忽略更高级别的情况下解决数据库上的性能问题并不明智 - 对于 .NET,所有 Web 前端技术中都有 wnoderfull 输出缓存机制。如果您愿意说出您使用的是哪一个...我可以帮助您提供链接。

关于.net - 从数据库中显示用户数量的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7965312/

相关文章:

.net - .NET Core、.NET Framework 和 Xamarin 之间有什么区别?

c# - 继承方案

c# - 字幕仅适用于全屏

php mysql_query 使用变量作为字段名称

php - Symfony2 命令行 "propel:sql:insert --force"失败

php - 获取单个数据库调用中的所有数据并在 Controller 中过滤它 - Codeigniter?

mysql - 优化 MySql 查询

.net - 从 SQL Server 存储过程或函数引用 .NET 程序集

c# - SMTP 中继 - 从控制台应用程序发送电子邮件

mysql - 具有多条记录的案例