Navicat 11.0.10版本
结果证明表关联比子查询速度更快
1.子查询:0.287s
SELECT sw,sh,cx,cy, (SELECT buy_url FROM b_product WHERE single_file_id = sys_item_id AND deleted = 0) AS buy_url, (SELECT discount_price FROM b_product WHERE single_file_id = sys_item_id AND deleted = 0) AS price, (SELECT price FROM b_product WHERE single_file_id = sys_item_id AND deleted = 0) AS old_price, (SELECT id FROM b_product WHERE single_file_id = sys_item_id AND deleted = 0) AS product_id, CONCAT('single_',sys_item_id) AS id FROM app_polly_file_item WHERE file_id=829 AND type='sys' AND sys_item_type='single' ORDER BY sys_item_id
2.表关联:0.176s
SELECT apfi.sw,apfi.sh,apfi.cx,apfi.cy, bp.buy_url, bp.discount_price AS price, bp.price AS old_price, bp.id AS product_id, CONCAT('single_',sys_item_id) AS id FROM app_polly_file_item apfi INNER JOIN b_product bp ON apfi.sys_item_id = bp.single_file_id AND bp.deleted=0 WHERE apfi.file_id=829 AND apfi.type='sys' AND apfi.sys_item_type='single' ORDER BY apfi.sys_item_id
更多sql优化参考:http://www.cnblogs.com/eva_2010/articles/2047558.html
相关推荐
### MySQL 子查询与连表查询的效率比较及优化 #### 一、子查询与连表查询概述 在SQL查询语言中,子查询与连表查询是两种非常重要的查询技术,广泛应用于各种复杂的业务场景中。为了更好地理解这两种查询方式的特点...
在MySQL中,子查询可以分为单行子查询、多行子查询和关联子查询。单行子查询返回单个值,多行子查询返回一组值,而关联子查询则涉及到与外部查询的行进行比较。 1. **单行子查询**: 单行子查询返回一个单一的、...
MySQL数据库在设计复杂的业务系统时...总结,MySQL的多表设计和查询方式是数据管理的核心技能,而备份和恢复策略是保障数据安全的关键环节。理解并熟练运用这些知识,能帮助我们在实际工作中更高效地管理和操作数据库。
本文通过对比两种MySQL递归树查询方法——使用自连接和递归联合以及利用变量和循环,详细分析了它们各自的实现原理及适用场景。在实际应用中,根据具体需求和数据特点选择合适的方法至关重要。希望本文能为开发人员...
例如,MySQL支持窗口函数和子查询优化,而Oracle有更丰富的分区功能和物质化视图。在处理大数据量时,两者都能通过索引优化、查询优化器等手段提升查询速度。 DBExportDoc V1.0 For Oracle.doc 和 DBExportDoc V1.0...
多表查询是指对多个表中的数据进行关联和查询的操作。常见的多表查询包括内连接、外连接、自连接等。 本文档的知识点涵盖了MySQL数据库的基础概念、数据类型、SQL语言、约束条件、查询语言、聚合函数、子查询和多表...
10. 使用EXISTS代替IN:在子查询中使用EXISTS通常比使用IN执行更快,尤其是在大表和小表的关联查询中,因为EXISTS在找到第一个匹配项后即停止搜索。 11. 使用表的别名:在复杂查询中使用表的别名可以提高代码的...
此外,值得注意的是,虽然关联查询通常比子查询更高效,但并非所有情况下都是如此。在某些特定场景下,如子查询结果非常小而外部查询结果非常大时,子查询可能更为合适。因此,优化SQL语句时,应根据实际数据分布和...
2. **利用临时表和JOIN**:有时候,将子查询的结果存入临时表,然后通过JOIN操作与主表进行关联,可能比直接使用子查询更高效。 3. **使用EXPLAIN分析执行计划**:通过EXPLAIN命令,可以查看MySQL如何执行查询,...
4. 使用JOIN替代子查询:在某些情况下,使用`JOIN`操作可能比子查询更快。 总之,MySQL子查询是一个强大的工具,但正确使用和优化子查询对于提高查询性能至关重要。在设计数据库查询时,应充分理解数据结构和查询...
子查询就是查询中有嵌套的查询,表连接都可以使用子查询,但不是所有子查询都能用表连接替 换,子查询比较灵活,方便,形态多样,适合用于作为查询的筛选条件,而表连接更适合于查看多 表的数据。 子查询不一定需要...
MySQL优化是指通过合理安排资源和调整系统参数,使得MySQL运行得更快、更节省资源的过程。优化的目的在于减少系统瓶颈,降低资源消耗,提升系统的响应速度。 #### 二、优化的主要方面 优化主要可以从以下几个方面...
如果salesinfo的CustomerID字段有索引,这个过程会更快,因为它可以直接查找缺失的关联,而无需处理整个子查询结果。 使用连接(JOIN)代替子查询的优势在于,它可以在一次扫描中完成两个表的数据合并,减少了数据...
MySQL中的`EXISTS`子句是SQL查询语句中一种重要...总结,`EXISTS`是MySQL查询语句中的一个强大工具,尤其在处理子查询和关联操作时。理解其工作原理和应用场景,可以帮助我们编写出更高效、更适应大数据处理的SQL查询。
9. **硬件升级**:增加 CPU、内存或使用更快的硬盘可以提高数据库性能。 总之,MySQL 数据集是数据库操作的核心,理解和优化数据集的处理方式对于数据库性能至关重要。在实际工作中,我们需要结合业务需求和数据库...
- **子查询**:在一个查询语句内部嵌套另一个查询语句,用于获取更复杂的查询结果。例如: ```sql SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE status = 'completed'); ``` #### ...
- **select_type列**:表示查询的类型,用于区分普通查询、联合查询、子查询等复杂查询。主要包括SIMPLE(简单的SELECT查询)、PRIMARY(包含子查询的外部查询)、SUBQUERY(子查询)、DEPENDENT SUBQUERY(依赖外部...
我们的优化其实就是对这些子任务的优化,要么消除其中一些子任务,要么减少子任务的执行次数,要么让子任务运行得更快。有了这些概念,我们就来看看如何优化查询。 二、慢查询基础:优化数据访问 通常查询慢的原因...