高分请教,回答必有分!!!! 怎样避免sql查询中出现笛卡儿积?及如何优化sql查询速度? 没有一些具体的例子不大好回答,SQL的优化有很多方法,不同的数据库不一样.不知道你用的是什么?最好举例说明 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在多表查询时,做个关联。如:select * from a,b where a.id=b.id ^^^^^^^^^^^^^^^ 无法回答,查资料.最好来一instance 笛卡儿积是正常的,是数据库的一种基本操作,不能避免的。要是连这也不要,还叫什么关系型数据库?如果出现数据不正常的重复,一定是关联的条件不够准确,检查你的SQL语句。 目前用的是sql server。出现冗余是否只是where条件不够? 我的例子较大,sql语句有上百行。查询速度应该怎么优化? 什么叫做“sql语句有上百行”,再多也是一句一句来得,不是吗?如果where子句写的好一点,一般是不会出现重复的信息;当然,一对多,多对多的表是有可能的;一对多的表一般是主表中的信息重复,主表和子表存在笛卡儿积,这是正常的;多对多的表一般就比较难说啦,有可能子句写的不好,就出现一大堆的重复数据;查询速度想快,使用索引,不要一次结果太多; 简单地说一条可以优化的语句,算是抛砖引玉吧!如果你的语句是查询在一个表中存在,另一个表中不存在记录时,不要使用not in,最好使用左连接。速度可以从1秒减到0.01秒. to bluepower2008(蓝色力量),还有优化的语句吗?再说点好吗? 查询时的速度很大程度上还取决于你的表的索引建的如何,要从大到小(就是说可以以下把数据量减少很多,比如你的表里有日期和部门,你检索的时候where rq = p_rq and bm = p_bm,那你就要在索引里把日期建在前面,这样一下可以将数据减少至1/365所以速度就快了,同时查询时使用频率高的在前,因为如果where条件里不包含索引中的字段,则索引就会相应的失效,尤其是没有包含第一个索引字段的话就完全失效了. 这个题目太大,我的看法是:要建立好索引,然后尽可能合理的使用索引,写Sql时要尽量减少表扫描和创建临时表,另外写完一条复杂的SQL后要反复测试,观察效果。最好使用数据库的一些调试工具来观察。^_^ 有什么专门的sql调试或测试工具吗? sqlserver自带的查询分析器就很不错,有图形形象地显示,不用去看给出一大堆数据的执行计划了。 如何用批处理执行sql语句? 求救 高手快来救命啊,如何让 一个INT 型字段 以聚合 或的关系检索出结果 如何追踪sqlserver的死锁? 请哪位给我提供一下Log Explorer这个工具,我在网上下载的不能用,过期了.有了就结帖. 求一简单的触发器 100分求教一条插入的SQL,up有分 查询速度问题 SQL Server 7.0的书 LDAP是否可以成为真正的世界级个人信息标准? 为什么还不普及? SQL SERVER+DELPHI问题??? 元旦发分了,如何改软件的使用权的问题
^^^^^^^^^^^^^^^
如果出现数据不正常的重复,一定是关联的条件不够准确,检查你的SQL语句。
出现冗余是否只是where条件不够?
查询速度应该怎么优化?
当然,一对多,多对多的表是有可能的;
一对多的表一般是主表中的信息重复,主表和子表存在笛卡儿积,这是正常的;
多对多的表一般就比较难说啦,有可能子句写的不好,就出现一大堆的重复数据;查询速度想快,使用索引,不要一次结果太多;
如果你的语句是查询在一个表中存在,另一个表中不存在记录时,不要使用not in,最好使用左连接。速度可以从1秒减到0.01秒.
还有优化的语句吗?再说点好吗?