+ -
当前位置:首页 → 问答吧 → 接近百万数据联表查询

接近百万数据联表查询

时间:2011-11-05

来源:互联网

A服务器的情况:
  A表有数据15万条,B表有88万条.
  A表是房源信息表,B表是储存图片地址表.

B服务器的情况:
  B表的图片储存在B服务器

每次查询都需要join表查询,显示相关数据与图片。

由于A、B表数据量不断的增大,查询mysql的速度越来越慢。
请问有什么好的解决方法?

作者: Ygb_Prince   发布时间: 2011-11-05

B表中的索引情况如何? 你的查询语句是什么样?

作者: ACMAIN_CHM   发布时间: 2011-11-05

索引设置的合理,按照join 表的原理,效率不会差的。

作者: mr_mablevi   发布时间: 2011-11-05

引用 1 楼 acmain_chm 的回复:

B表中的索引情况如何? 你的查询语句是什么样?

忘记说C表了,应该是A表与C表根据条件查询,然后得到的ID后,从B表中得到图片地址,然后在前台显示。
A表有50多个字段,B表有10个字段,C表有25个字段。
他们的关系是这样的,A表的id与C表oid,B表的loft_id之间建立了索引的关系,也就是外键!

作者: Ygb_Prince   发布时间: 2011-11-05

sql语句:
$sql="SELECT L.*,S.* FROM $loft_info_t AS L JOIN $loft_support_t AS S ON L.id=S.aid $where $orderby $limit";
$loft_list = array();
$db->query($sql);
while($db->next_record_assoc()) {
  $loft_id=$db->Record["id"];
  $imgarr=$qjwh_db->row_query("SELECT fl_sname FROM files_list WHERE loft_id=$loft_id ORDER BY oid ASC LIMIT 1");
  if(count($imgarr[0]["fl_sname"])){
  $img="http://223.4.8.70/photo_edit/GZ_PHOTOS/".$imgarr[0]["fl_sname"];
  }else{
  $img=$web_root."/images/others/hotimg.jpg";
  }

作者: Ygb_Prince   发布时间: 2011-11-05

引用 2 楼 mr_mablevi 的回复:

索引设置的合理,按照join 表的原理,效率不会差的。

sql语句:
$sql="SELECT L.*,S.* FROM $loft_info_t AS L JOIN $loft_support_t AS S ON L.id=S.aid $where $orderby $limit";
$loft_list = array();
$db->query($sql);
while($db->next_record_assoc()) {
  $loft_id=$db->Record["id"];
  $imgarr=$qjwh_db->row_query("SELECT fl_sname FROM files_list WHERE loft_id=$loft_id ORDER BY oid ASC LIMIT 1");
  if(count($imgarr[0]["fl_sname"])){
  $img="http://223.4.8.70/photo_edit/GZ_PHOTOS/".$imgarr[0]["fl_sname"];
  }else{
  $img=$web_root."/images/others/hotimg.jpg";
  }

作者: Ygb_Prince   发布时间: 2011-11-05

相关阅读 更多