多表查询SQL 语句优化

    数据多个表关联查询时,由于表之间的连接关系(内连接、外连接、交叉连接),导致数据库服务器常常从几万条甚至更多的数据记录中查找符合条件的记录,如果sql查询语句设计不好查询的复杂度就会直线上升,甚至是指数级上升,导致查询时间长甚至失去相应,这里讲两种从sql语句优化查询的方法。

1.把外连接变成交叉连接或内连接(对不起,在写改良例子的时候发现这种方法并不能改善查询的速度,这是一个错误):

证明过程如下:

我们建三个表分别是:templebonze、和woodfish

temple表示庙宇,它的字段有:

temple_id       int

temple_name   varchar(50)

location   varchar(50)

build_date       datetime

 

temple_id是主键,设为自增;temple_name是庙宇名;location是位置,就是寺庙的地址;build_date是建庙时间。

 

bonze表示和尚,它的字段有(出家人四大皆空,这些字段够了,呵呵)

bonze_id  int

temple_id        int

bonze_name    varchar(50)

register_time   datetime

bonze_id是主键,设为自增;temple_id表示这个和尚属于哪个寺庙,对应寺庙的temple_id,对于没有寺庙的流浪和尚这里暂时不考虑(写这篇文章主要是告诉一些大寺庙,他们可以采用软件管理的方式来管理寺庙,如果他们看到了我这篇文章可能会找我开发一个开发软件也未定,至于流浪和尚是不太可能的了,所以不考虑他们,呵呵,罪过、罪过)bonze_name是和尚名字,和尚本没有名字就叫法号吧;register_time是注册时间,现在做个和尚挺不容易的,难度差不多赶上高考上榜了,所以要一个注册时间。

 

woodfish表示木鱼,呵呵,木鱼的英文实在不会写,只好直译了,哪位兄弟姐妹知道了告诉我一下。木鱼的字段有:

woodfish_id    int    Unchecked

bonze_id  int    Unchecked

woodfish_num       varchar(50)    Checked

woodfish_id是主键,设为自增;bonze_id表示这个木鱼属于那个和尚,不属于任何和尚的木鱼我们也暂时不考虑,那些房子仓库就可以了,不用编号什么的;woodfish_num表示木鱼编号。

我们建立表的关系图如下(微软的SqlServerManagement应该提供可以把关系图转换成图片的功能,我还要photoshop来截图)

1 数据关系图

相当简单的一个数据库。我们假设有些寺庙可以没有和尚,这就是荒庙,看过武侠小说的兄弟们应该可以了解的。和尚可以没有木鱼,可能太穷了,买不起,也可能太懒了,懒得敲。当然有些和尚也可以拥有几个木鱼,可能准备收徒弟的时候送个木鱼做见面礼什么的。

现在我们插入一些数据。一下数据仅为测试使用,并无意冒犯任何寺庙和庙里的高僧。

temple的数据为:

temple_id

temple_name

location

build_time

1

少林寺

河南省登封市嵩山

1900-2-2 0:00 :00

2

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值