0 0

多表关联查询效率就很低,有没有只改SQL的优化方案?5

简化模型如下:
select * from t,ut,u
where t.tid = ut.tid 
and ut.uid = u.uid

其中t表和ut表的数据量都在300W的样子,u表的数据量200条左右
查询时间在10秒左右

有没有什么好的优化方案?只从数据库这一层来做优化的
(历史原因:任SB设计人员非要搞了一个中间表ut,实际上在t表中多搞一个uid的字段就好了,然后可以废除ut表,但是修改模型的话代价太大了)
2013年5月24日 10:29

10个答案 按时间排序 按投票排序

0 0

采纳的答案

一下子查询出来这么多数据时间当然久了,试着查询出100条记录试试,如果时间仍然比较久,可以考虑触发器:新建一张表,存三张表所有的字段,ut新增时的触发器往新表插入数据,删除的时候删除新表数据,t表和u表修改的时候修改新表,查询的时候查询新表(只改查询sql),其他增删改逻辑都不变。

2013年5月24日 10:40
0 0

给tid和uid加上索引,并且改变sql为select * from t,ut,u where ut.uid = u.uid and t.tid = ut.tid。因为t表和ut表的数据量都在300W的样子,u表的数据量200条左右。所以先上u表和ut表关联减少联合查询记录数,最后再和t表关联,查询速度就快了。多表连接条件先后顺序也影响sql查询效率。

2013年5月27日 17:14
0 0

首先查看SQL的执行计划。看看能优化什么地方,一般是添加索引。

2013年5月27日 09:40
0 0

1、减少表嵌套,只列出需要的查询字段
2、给要创建的表主键加上索引

3、第三个就是“zyn010101”说的,创建一个新表

2013年5月26日 22:23
0 0

如果不是业务需要查询所有记录,尽量少使用select *,这样可以降低io。
上面这个查询由于没有过滤数据,应该都是走的全表扫描。建议增加过滤条件,并对id字段加索引。

2013年5月24日 17:20
0 0

对tid 和 uid 上加索引的说法是比较支持的。而且如果不需要全部字段,把到具体的字段代替*

2013年5月24日 16:52
0 0

最简单的优化 就是减少连表的数量 实际上就是减少了嵌套循环查询的层次 即降低了时间复杂度

可以考虑 3条sql/2条sql  减少嵌套

2013年5月24日 14:04
0 0

tid 和 uid 上加索引

2013年5月24日 13:22
0 0

你们数据库设计应该是这两张表的关系是多对多的,不然中间表应该没必要。说了句废话我。。。对答案没什么帮助

2013年5月24日 11:43
0 0

select * from t join ut on t.tid = ut.tid join u on ut.uid = u.uid
试试这个.

2013年5月24日 10:52

相关推荐

    Spark SQL优化器系统Catalyst的深入解析和应用.pdf

    Spark SQL优化器系统Catalyst是Apache Spark生态系统中用于处理SQL查询优化的核心组件,它结合了传统关系型数据库的查询优化技术和大数据处理的分布式特性。Spark SQL允许用户使用SQL查询语言来操作存储在分布式数据...

    关系数据库中的查询优化.pptx

    #### 五、SQL优化器的使用 **基于代价的优化** 1. **代价评估:** - 评估查询计划的执行成本,包括CPU、I/O操作等。 - 选择成本最低的执行计划。 2. **代价模型改进:** - 不断优化代价模型,提高优化器的准确...

    ClickHouse业界解决方案学习笔记.docx

    - **优化的查询执行**:利用索引和其他优化措施提高查询效率。 - **高效的内存管理**:利用内存缓存和优化算法减少磁盘I/O操作。 #### 六、总结 ClickHouse凭借其独特的架构和技术特点,在OLAP领域内表现出色,...

    03开源NewSql数据库TiDB-Deep Dive into TiDB

    但是还不够完善,在 2.0 版本中,一方面优化统计信息的精确度以及更新及时程度,另一方面提升 SQL 优化器的能力,对查询代价的估算更加精准、对复杂过滤条件的分析更加细致、对关联子查询的处理更加优雅、对物理算子...

    Apache CarbonData,实现大数据即席查询秒级响应.pptx

    Apache CarbonData是为了解决大数据查询效率而设计的一种开源数据存储和分析系统,它专注于提供大数据即席查询的秒级响应。Apache CarbonData利用了一系列高级技术来优化数据处理,包括预计算、列式存储、数据压缩和...

    大数据分析存储解决方案.zip

    7. **数据仓库优化**:如Snowflake和Redshift,这些现代数据仓库针对大数据分析进行了优化,提供了高性能的SQL查询和多租户架构。 8. **混合存储**:结合使用不同类型的存储解决方案,如冷热数据分离,可以降低成本...

    业务设计1

    优点是减少表关联,提升查询速度,利于索引优化;缺点是可能导致数据冗余,增加数据维护成本。因此,设计数据库时应权衡范式化和反范式化的需求,根据实际业务场景灵活调整。 在进行物理设计时,命名规范至关重要,...

    ssm和ssh的对比

    Hibernate在数据库移植性上有优势,但当处理复杂的多表关联查询时,可能会导致效率低下,且SQL的优化较为困难。 相比之下,MyBatis是一个轻量级的持久层框架,允许开发者直接编写SQL,提供了更好的SQL优化可能性。...

    MyBatis教程

    3. **优化方案**: - 连接数据库的配置单独放在properties文件中; - 为实体类定义别名简化XML引用; - 加入log4j配置文件打印日志信息。 4. **字段名与实体类属性名不一致的处理**: - 在SQL映射文件中使用`...

    DB2手册pdf

    在可能的情况下,考虑使用更高效的替代方案,如使用索引或优化查询逻辑。 #### COMMIT的次数要适当 过多的`COMMIT`操作会导致额外的I/O开销。合理规划事务的边界,减少不必要的提交可以提高性能。 #### INSERT和...

    毕业论文jsp1084基于关联规则的学习资源推荐系统mysql.doc

    该系统不仅能够提供基本的图书管理系统功能,还引入了基于内容的推荐机制,通过关联规则技术为用户推荐相关图书,从而优化用户的检索体验和提高学习资源的获取效率。 关联规则推荐技术作为系统的核心,能够帮助用户...

    自来水收费解决方案.pdf

    ### 自来水收费解决方案知识点详解 #### 一、背景与需求分析 - **传统管理模式的局限性**:传统的手工管理方式难以适应当前自来水公司的开放经营模式,尤其是在计算机技术日益普及的背景下,这种传统的管理模式...

    Node.js的DAO框架bearcat-dao.zip

    开发者只需要编写SQL,bearcat-dao 负责在类(model)属性与数据库表的列之间映射参数和结果Modelmodel 定义使用 bearcat model因此,可以非常容易的就设置映射关系、约束、relation关系例如,我们有一个 test 表,...

    Spring,hibernate,struts的面试笔试题含答案

    1. **使用双向一对多关联,避免使用单向一对多:** 单向一对多可能导致查询效率降低。 2. **灵活使用单向一对多关联:** 在适当的情况下,可以使用单向一对多来优化性能。 3. **用多对一取代一对一:** 多对一通常比...

    2018 PHP 最新面试题

    - 如果必须进行跨表查询,则应确保所有关联的字段都有索引。 - 使用EXPLAIN命令检查查询计划,并根据结果调整索引策略。 - 在设计阶段考虑数据冗余,适当引入冗余字段以减少查询复杂度。 7. **索引应用** - **...

    星际酒店管理整体方案.pdf

    4. **运行速度快**:在Windows NT/2000平台上运行,使用3 SQL/2000作为后台数据库,采用Delphi7.0开发,硬件需求低,运行速度快。 5. **开放性与接口兼容性**:能与电话交换机、门锁系统、财务软件等无缝对接,实现...

    MongoDB交流-基础知识介绍

    - **功能性限制**:大多数NoSQL数据库缺乏复杂事务处理和多表联接查询的能力。 - **适用范围**:在需要强一致性事务、复杂业务逻辑或高级分析查询的应用场景中,NoSQL可能不是最佳选择。 #### NoSQL数据模型分类 -...

    FileDB

    例如,它可能会展示如何使用SQL语句来操作数据,或者如何利用ORM(对象关系映射)技术将数据模型与数据库表关联起来,简化数据操作。 FileDB的标签"Mobile数据库"表明它是专门为移动应用设计的,这意味着它可能具备...

    iBATIS 2.0 开发指南

    - **灵活性**:由于开发者可以直接编写 SQL 语句,因此在处理复杂查询时具有更大的灵活性,同时也能够更好地优化性能。 - **简单性**:iBATIS 的 API 相对简单,学习曲线较平缓,适合希望快速上手的开发者。 - **轻...

Global site tag (gtag.js) - Google Analytics