在多表查询中,表的字段数目的多少对查询的性能有无影响?(50分)

  • 主题发起人 主题发起人 raider
  • 开始时间 开始时间
R

raider

Unregistered / Unconfirmed
GUEST, unregistred user!

如题。我们的教务管理中,很多表都要和学生基本信息表连接。而学生信息表的
字段数较多。不知对别的表的插入、删除、更改、查询的效率是否有影响?
另外,我觉得有时挺矛盾的。在查询中,我们经常是输入学生的姓名,
而我们的大部分表的prim key 是学号,这样我们必须先到基本信息库
中根据姓名找到学号, 然后根据找到的学号去别的库中找信息。是不是
实际系统中都是这样的呢?我总觉得在绕大弯。这样好处在哪里?
 
在关系数据库中,查询中查询的字段数目多少对查询效率没什么影响,
但数据库中记录数有影响,因为系统在查询时,首先根据关系字段
和查询条件来搜索,搜索到后,在读去需要的记录(读取需要的字段),
另外,如果返回的是记录集,字段过多会导致I/O负担和网络流量。

输入学生姓名,但根据学号来判断,这是非常正确的。
在关系数据库中经常要用到的。
 
在数据库中查询时,想速度快,有以下:
 1.按查询频率高的字段建立索引,或定为Key
2.只取你要用的字段,不要轻易使用SELECT * FROM ...
3.数据记录的多少对查询有很大的影响,具体的数据库各不
相同,您可以在你的机器上实验以下。如果是因为这个,
您就可以考虑将学生库拆分了。
4。有很多书上有查询优化的,可以自己看.
 
如果字段多, 用*返回的记录占内存(或临时库)的空间大, 速度就慢了.
 
还是要什么写什么字段吧,虽然写程序是烦一点,但性能肯定会好一点,
尤其是在多表查询的情况之下。此外根据姓名找学生信息的时候,将两
张表关联起来查询,不就一次完成了。这种情况下一定要选什么写什么
字段,否则三、四张表在一起,就麻烦了。
 
查询是没影响,不过返回来的数据一大,流量和内存都厉害!
关于KEY
考虑到学生同名,还是用学号比较好,在学生列建立索引,可以提高查询效率,
而且,直接
select xx,xx,xx from yourdb where StudentName = 'name'
也可以查出学生信息//也许你的库结构的问题,不能如此做。
 
多人接受答案了。
 
后退
顶部