发布网友 发布时间:2022-03-25 20:17
共6个回答
热心网友 时间:2022-03-25 21:46
select count(1) from user跟select count(*) from user效率基本是一样的。
我觉得可以加一个统计信息的表,把主题数,帖子数等数据放到这个表里,但是这样就会牺牲一些写的效率,因为每次发帖删贴都要更新这个表。但是如果写的时候操作数据一般不会太多,这个应该可以接受。
另外一个建议就是搞一个线程每隔多少时间来统计一下主题数,帖子数等数据,这样的数据就不是实时的了,但是那么大的数据量的时候这些数据的也么比较那么实时更新。
PS;bluedn,大数据量操作的sql语句尽量不要使用sql的函数,尽量取了数据之后通过程序来处理得到想要的结果。
热心网友 时间:2022-03-25 23:04
也不排除 主题数86814个,贴子数129486084篇,KLZ毕业数1953
是存储在 一个表的 3个字段上面了.
还有的可能就是, 这些信息,已经缓存起来了.
你每次打开页面,这3个信息,是从内存里面读取出来的.
热心网友 时间:2022-03-26 00:39
我刚刚找了一个业务数据库,测试了下,数据库是SQL2000,服务器4G内存,
数据库文件大小在50G以上。单表记录统计语句。
select object_name(id) tablename,8*reserved/1024 reserved,rtrim(8*dpages/1024)+'Mb' used
,8*(reserved-dpages)/1024 unused,8*dpages/1024-rows/1024*minlen/1024 free,
rows,* from sysindexes
where indid=1
order by reserved desc
测出来 某个表的行数 在 50000000 以上。
结果: select count(1) from TBus_History
5分钟了,都还没出来统计。
热心网友 时间:2022-03-26 02:30
4000w,20秒够快的了
第一次慢,第2次缓存结果了就快了
热心网友 时间:2022-03-26 04:38
改成 select count(1) from user 试试
热心网友 时间:2022-03-26 07:03
使用索引