【mysql】语句优化

论坛上看到有个类似的分割查看查询结果的梗 一时手痒就出手 治一治

比如有 A B 表
A 表
ID,NAME
1,A
2,B
3,C

B 表
FK_ID,TYPE,VALUE
1,socer,100
1,socker,90
2,socker,20

求这样的结果
A.ID,A.NAME,A.SOCKER
1,A,‘100,90‘
2,B,‘20‘

也就是 SELECT 的时候做了一个字段 SOCKER 把 B 表的列值做了一行,用","符号分割。求 SQL 语句 感谢

手写 建表
create table A
(
   ID             int(10) not null auto_increment,
   NAME           varchar(20),
   primary key (ID)
);

create table B
(
   FK_ID             int(10) not null auto_increment,
   TYPE           varchar(10),  VALUE      varchar(10)
 );

实现sql如下①

SELECT  A.ID ,
        A.NAME ,
        group_concat(b.VALUE) AS SOCKER
FROM    A
        INNER JOIN B ON A.ID = b.FK_ID
GROUP BY A.ID ,
        A.NAME

实现sql如下② 支持输出结果写进硬盘路径

SELECT  A.ID     AS  ‘A.ID‘ ,
        A.NAME  AS   ‘A.NAME‘  ,
GROUP_CONCAT(B.VALUE) AS  ‘A.SOCKER‘ FROM    A,B WHERE A.ID = B.FK_ID GROUP BY A.ID , A.NAME
INTO OUTFILE "D:/NEWS.SQL";
时间: 2024-11-05 14:29:47

【mysql】语句优化的相关文章

mysql语句优化总结(一)

Sql语句优化和索引 1.Innerjoin和左连接,右连接,子查询 A.     inner join内连接也叫等值连接是,left/rightjoin是外连接. SELECT A.id,A.name,B.id,B.name FROM A LEFT JOIN B ON A.id =B.id; SELECT A.id,A.name,B.id,B.name FROM A RIGHT JOIN ON B A.id= B.id; SELECT A.id,A.name,B.id,B.name FROM

mysql语句优化方案(网上流传)

关于mysql处理百万级以上的数据时如何提高其查询速度的方法 最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法. 由于在参与的实际项目中发现当mysql表的数据量达到百万级时,普通SQL查询效率呈直线下降,而且如果where中的查询条件较多时,其查询速度简直无法容忍.曾经测试对一个包含400多万条记录(有索引)的表执行一条条件查询,其查询时间竟然高达40几秒,相信这么高的查询延时,任何用户都会抓狂.因此如何提高sql语句查询效率,显得十分重要.以下是网上

9 MySQL语句优化的原则

1.使用索引来更快地遍历表. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存放在数据页上.合理的索引设计要建立在对各种查询的分析和预测上.一般来说:  a.有大量重复值.且经常有范围查询( > ,< ,> =,< =)和order by.group by发生的列,可考虑建立群集索引:  b.经常同时存取多列,且每列都含有重复值可考虑建立组合索引:  c.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列.索引虽有助于提高性

mysql 语句优化一列

优化前语句: SELECT ifnull(s.mileage, -1) as mile, s.fuel_hkm as val, t.fhkm_rank as rank, ifnull((select u.photo from app_user u where u.user_id = t.user_id  limit 1),'') as path, case when s.car_id = '***********' then 0 else 1 end as self, ifnull(( SELE

MySQL语句优化的原则

1.使用索引来更快地遍历表. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存放在数据页上.合理的索引设计要建立在对各种查询的分析和预测上.一般来说: a.有大量重复值.且经常有范围查询( > ,< ,> =,< =)和order by.group by发生的列,可考虑建立群集索引: b.经常同时存取多列,且每列都含有重复值可考虑建立组合索引: c.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列.索引虽有助于提高性能但不

MySQL语句优化方法(简单版)

基础回顾: sql语句是怎么样运行的? 一般来说,客户端发送sql语句到数据库服务器——数据库服务器进行运算并返回结果——客户端显示sql语句运行结果. 在本地运行时以workbench为例,客户端为workbench,数据库服务器则是安装在本地的mysql数据库. 为什么要优化sql语句? 加快运行速度 减少数据库资源开销 在企业级数据库中sql优化是必备技能. 基础优化技能: 在查询语句中尽量减少查询语句返回结果,尤其是 SELECT*FROMXXX 来返回全部数据.只选择必要的数据,作为返

mysql语句优化技巧

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引

mysql 语句优化心得

排序导致性能较慢 优化策略:1.尽量不使用排序 2.只查有索引的结果然后 内连接查询 select  bizchance0_.*  from biz_chance bizchance0_, biz_bizcustomer bizbizcust1_ where bizchance0_.uuid=bizbizcust1_.recordinfoid and bizchance0_.ispublic=1          order by bizchance0_.orderkey desc limit

MySQL语句优化

一.优化SQL的一般步骤 a)通过SHOW STATUS;命令了解各种SQL的执行频率 SHOW [SESSION|GLOBAL] STATUS; SESSION (默认)表示当前连接 GLOBAL 表示自数据库启动至今 SHOW GLOBAL STATUS LIKE 'com_%' b)查看本次登录以来增删改查的次数 SHOW STATUS LIKE 'com_select%' SHOW STATUS LIKE 'com_update%' SHOW STATUS LIKE 'com_inser

Mysql语句优化小技巧

在使用group by 分组查询是,默认分组后,还会排序(Using filesort),可能会降低速度. 解决办法:加上order by null 不让它排序 select * from emp group by empno order by null; 有些情况下,可以使用连接来替代子查询.因为使用join,MySQL不需要在内存中创建临时表 select * from dept, emp where dept.deptno=emp.deptno; [简单处理方式] select * fro