Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[BUG] uc中的uc_friends和uch中的uchome_friend数据量是否是一样的

[复制链接]
hmfsmile 发表于 2009-9-2 00:23:48 | 显示全部楼层 |阅读模式
本帖最后由 hmfsmile 于 2009-9-2 00:41 编辑

我数据库uc中的uc_friends表的数据总量和uch中的uchome_friend数据总量是不一样的。感觉应该是一样总数才对。为什么相差巨大。
另外我开启的慢查询为2秒。记录的数据慢查询90%为
  1. SELECT f.*, m.username FROM `zhineiuc`.uc_friends f LEFT JOIN `zhineiuc`.uc_members m ON f.friendid=m.uid WHERE f.friendid='290901' AND f.direction='1' LIMIT 0, 999;
复制代码
类式的慢查询. 我随机取出几条记录在myqladmin 上执行返回在的数据全部都为0
能过搜索可以找到执行这个语句的php程序为:
  1. function get_list($uid, $page, $pagesize, $totalnum, $direction = 0) {
  2.                 $start = $this->base->page_get_start($page, $pagesize, $totalnum);
  3.                 $sqladd = '';
  4.                 if($direction == 0) {
  5.                         $sqladd = "f.uid='$uid'";
  6.                 } elseif($direction == 1) {
  7.                         $sqladd = "f.uid='$uid' AND f.direction='1'";
  8.                 } elseif($direction == 2) {
  9.                         $sqladd = "f.friendid='$uid' AND f.direction='1'";
  10.                 } elseif($direction == 3) {
  11.                         $sqladd = "f.uid='$uid' AND f.direction='3'";
  12.                 }
  13.                 if($sqladd) {
  14.                         $data = $this->db->fetch_all("SELECT f.*, m.username FROM ".UC_DBTABLEPRE."friends f LEFT JOIN ".UC_DBTABLEPRE."members m ON f.friendid=m.uid WHERE $sqladd LIMIT $start, $pagesize");
  15.                         return $data;
  16.                 } else {
  17.                         return array();
  18.                 }
  19.         }
复制代码
请问。
1:uc_friends表的数据总量和uch中的uchome_friend数据总量是否必须是一样的。

2:这个function get_list()是功能是什么?在什么地方被调用。如何才能避免这样的慢查询.我一天生成的慢查询有1M.90%都是这个。

3:如何优化。
 楼主| hmfsmile 发表于 2009-9-2 23:57:51 | 显示全部楼层
官方的回复。每次问都没有人回答
回复

使用道具 举报

 楼主| hmfsmile 发表于 2009-9-7 16:27:40 | 显示全部楼层
老大出来回答下
回复

使用道具 举报

andy888 发表于 2009-9-7 17:02:28 | 显示全部楼层
1.uc_friends表的数据总量和uch中的uchome_friend数据总量是不会一样的,因为uc_friends只是代表在UC下面的应用中有谁与谁成为了好友,uchome_friend是UCH本身的好友关系表
2、可以做一下修改,你打开cp_friend.php文件找到
  1. ssetcookie('synfriend', 1, 1800);//30分钟检查一次
复制代码
把这个时间修改长一点,不需要半小时同步一次
回复

使用道具 举报

 楼主| hmfsmile 发表于 2009-9-7 17:54:38 | 显示全部楼层
本帖最后由 hmfsmile 于 2009-9-7 22:21 编辑

4# andy888
您的意思是不是慢查询是friend表的同布产生的?
现在数据库里uchome_friend数据很大。有没有什么办法优化?

另外:接你的说明。uch应该是uc里的一个应用。那么uc_friends应该比uchome_friend才对。但实际上是uchome_friend比uc_friends多.
回复

使用道具 举报

xiaobedian 发表于 2009-9-22 16:11:12 | 显示全部楼层
uchome_friend表可能会比uc_friends表多
因为,只有在加好友成功之后,才会在uc_friends中添加相应的记录,如果我只是提交申请,并没有得到同意,那么uc_friends表是不添加记录的,uchome_friend表会添加一条记录,这样的情况如果很多,自然会造成uchome_friend表自然会比uc_friends表多很多记录
回复

使用道具 举报

zhangjhtt 发表于 2009-12-14 14:51:39 | 显示全部楼层
回复 6# xiaobedian


    只有两个应用之间的好友关系才会在ucenter中的friends表中存在记录吗?某个应用内的好友关系不会再ucenter中的friends表中生成记录?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 10:23 , Processed in 0.028672 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表