我做的系统大概是这样一个结构.主表 A
子表(B,C,D等等很多个)比如有港口表.银行表,船期表等等,大概有20多个这样的基本表,这些子表的设计结构基本上都是
code , codename, detail 这样的形式,他们通过各自code与A表关联.
于是我查询时候用了这样的形式
select a.*,getnamebyCoce(a.portcode),getnamebyCoce(a.VEsselcode),.......from a where A.DATE BETWEEN....AND ....这样的形式.
其中 getnamebyCoce是个自定义函数,用来从B.C,D表中抓详细信息(这样的表设计应该还是合理的吧)但是发现函数效率太慢了呀.有个10个8个这样的函数时间一厂速度真是慢呀.如果用join的话这表也太多了吧,估计一局也写不出来吧,况且我A表里面比如港口的话有起运港,目的港这样不同的港口,但是都是早PORT表里面取的,但是在A表里面就分别放了几个列,这样也使的join很难实现哦,请问有什么好的实现吗?
子表(B,C,D等等很多个)比如有港口表.银行表,船期表等等,大概有20多个这样的基本表,这些子表的设计结构基本上都是
code , codename, detail 这样的形式,他们通过各自code与A表关联.
于是我查询时候用了这样的形式
select a.*,getnamebyCoce(a.portcode),getnamebyCoce(a.VEsselcode),.......from a where A.DATE BETWEEN....AND ....这样的形式.
其中 getnamebyCoce是个自定义函数,用来从B.C,D表中抓详细信息(这样的表设计应该还是合理的吧)但是发现函数效率太慢了呀.有个10个8个这样的函数时间一厂速度真是慢呀.如果用join的话这表也太多了吧,估计一局也写不出来吧,况且我A表里面比如港口的话有起运港,目的港这样不同的港口,但是都是早PORT表里面取的,但是在A表里面就分别放了几个列,这样也使的join很难实现哦,请问有什么好的实现吗?
解决方案 »
- 数据检索拆分问题
- 求一简单的查询语句!
- 如何用一个SQL语句,把某月所有的天数列出来。
- 问一个非常简单的SQL SERVER问题
- 请教:如何在存储过程中间获得某一select语句的结果集中的单个记录
- 一个小问题,想听听大家意见!
- 杯具的数据库结构,分享下
- 求大大解决一个触发器问题
- sql server权限问题
- [Microsoft][ODBC SQL Server Driver][DBNETLIB]一般性网络错误。请检查网络文档。
- SQL2000出现一个奇怪的问题:在SQL2000的菜单中找不到查询分析器和事件管理器,求助
- 用sql语句在产品库里要怎么写一段语句,一次性列出要淘汰的图片,并删除所记录呢?
CREATE FUNCTION dbo.getPort
(
@code varchar(20)
)
RETURNS varchar(30)
AS
BEGIN
declare @Port varchar(30)
select @Port=Portname from port where port_code=@code
RETURN isnull(@Port,'')
END
关键是用连接有2个问题,一个是太多了关联,可能有几十个表吧,是否可以用桥梁表解决下呀!
2就是比如我这个港口可能有起运港,目的港的code,都防在A表.这样连接一句还是实现不了.
select t1.portname as '起运港', t2.portname as '目的港'
from a
join port t1 on (a.起运港_code = t1.port_code )
join port t2 on (a.目的港_code = t2.port_code )