数据库~Mysql派生表注意的几点~关于百万数据的慢…
2018-06-18 01:01:36来源:未知 阅读 ()
基础概念
派生表是从SELECT语句返回的虚拟表。派生表类似于临时表,但是在SELECT
语句中使用派生表比临时表简单得多,因为它不需要创建临时表的步骤。
术语:*派生表*和子查询通常可互换使用。当SELECT
语句的FROM
子句中使用独立子查询时,我们将其称为派生表。
以下说明了使用派生表的查询:
请注意,独立子查询是一个子查询,可独立于包含该语句的执行语句!与子查询不同,派生表必须具有别名
实例中的例子
下面是一个派生表的例子
EXPLAIN SELECT * FROM ( SELECT companyid, count(*) FROM system_company where CompanyId=1 ) as a limit 10
从EXPLAIN 这个执行计划中可以发展,派生表没有走索引
事实上,这个问题告诉我们,在数据量大的时候,不要使用派生表,那么应该使用什么呢?
下面请看子查询的例子
EXPLAIN SELECT ( SELECT companyid FROM system_company WHERE CompanyId = a.companyid LIMIT 1 ) as field1 FROM system_company AS a where companyid=1
通过查询计划可以看到,它是走索引的,所有执行效率自然快!
在我们进行分组统计时,也应该尽量使用子查询,而不是派生表,看下面的例子,分别实现了对公司进行统计,将system_companydetails里的数量求和
派生表(全表扫描,效率低下):
EXPLAIN SELECT s.companyid,a.count FROM system_company s inner join ( SELECT companyid, count(*) as count FROM system_companydetails ) AS a on s.companyid=a.companyid LIMIT 10
子查询(索引聚合,值得推荐):
EXPLAIN SELECT s.companyid, ( SELECT count(*) FROM system_companydetails WHERE companyid = s.companyid ) AS count FROM system_company s where companyid=1
感谢各位的阅读与分析!
有问题欢迎讨论!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MySQL replace函数怎么替换字符串语句 2020-03-09
- PHP访问MySQL查询超时怎么办 2020-03-09
- mysql登录时闪退 2020-02-27
- MySQL出现1067错误号 2020-02-27
- mysql7.x如何单独安装mysql 2020-02-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash