首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL语句规范参考

--被视为SQL注释,结果语句报错。 4. 不得使用“select * from …”语法,必须标明字段名。即select col1, col2,… from tablea where … 5....执行SQL时一次应只执行一条,如果多条语句则应分开执行,但必须保持在一个事务。不得一次执行通过分号等分开多条语句,这样处理不清晰。 10. 如果能采用or代替,则不宜使用in 语句。...特别对大数据量两者检索速度有很明显区别。 3. 不宜使用外连接。外连接效率低。 4. 一条SQL语句中不宜使用3层以上嵌套查询。如果超过,则应在Java等应用服务器程序处理。 5....一条SQL语句中不得从4个及以上表同时取数。仅作关联或过滤条件而不涉及取数不参与个数计算;如果必须关联4个或4个以上表,应在Java等应用服务器程序处理。 6....如col1 是索引列,条件col1 !=0 可以拆分为col1 >0 or col2 <0。 8. 应尽量将数据库函数、计算表达式写在逻辑操作符右边。因为这些对列操作会将导致扫描,影响性能。

1.2K20

【两只鱼】SQL 调优之13条锦囊妙计

limit优化:若为limit 999999 10 则为从第一行起定位至999999行,然后再扫描处后10行,相当于全扫描,性能很低。 若id自增,则可以用id>行数 limit 条数。...innoDB必须全扫描,而且会锁级锁,不是行锁),当数据达到千万级别时,速度很慢,一个SQL就会让数据库挂掉。...Nested Loop Join 实际就是通过驱动结果集作为循环基础数据,然后一条一条通过该结果集中数据作为过滤条件到下一个查询数据,然后合并结果。...优化left join: 条件尽量能够过滤一些行将驱动变得小一点,用小去驱动大条件列一定要加上索引(主键、唯一索引、前缀索引等),最好能够使type达到range及以上(ref,eq_ref...),因此可能会选择全扫描 编码不同 最左前缀匹配原则: 在mysql建立联合索引时会遵循最左前缀匹配原则,即最左优先,在检索数据时从联合索引最左边开始匹配 示例:对列col1、列col2和列col3

2.2K30
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL 索引与性能调优

索引用于快速找出在某个列中有一特定值行,如果不使用索引MySQL必须从第l条记录开始读完整个,直到找出相关行.越大,查询数据所花费时间越多,如果查询列有一个索引,MySQL能快速到达某个位置去搜寻数据文件...,且空间类型字段必须空,可以看到,table_5g字段创建了名称为spatIdex空间索引,注意:创建时间指定空间类型字段值非空约束,并且存储引擎必须MyISAM....ref 显示索引那一列被使用了,如果可能的话,是一个常数,那些列或常量被用于查找索引列上值。定义了引用了那些库。...优先优化NestedLoop内层循环 -- 保证join语句中被驱动join条件字段已经被索引. -- 当无法保证被驱动join条件字段被索引且内存资源充足前提下,不要太吝惜joinbuffer...sql -- 查询3号记录问题,得到3号语句查询生命周期。

2.3K20

从一个sql引发hive谓词下推全面复盘及源码分析(

在left outer join,左数据全返回,对于左在右无法匹配数据相应列用null表示,则此时右是Null Supplying table,相应的如果是right outer join...实际,这个也是因为join特殊性,要求左和右必须完全匹配,这个也做优化提供了可能性。 case2 inner join 之后谓词 select t1....在这里,test1保留,符合【Join(只包括left join ,right join,full join)谓词如果是保留,则不会下推】 ,test2进行了下推。...数据与test2这条关联,关联就展示,关联不,补null;另外,test1openid不为pear数据不与test2做关联,直接补null。。。...这也算是符合了【 Join(只包括 left join ,right join,full join)谓词如果是保留,则不会下推】 解释一下数据结果: ?

1.9K31

总结了67个pandas函数,完美解决数据处理,拿来即用!

本⽂件导⼊数据 pd.read_excel(filename) # 从Excel⽂件导⼊数据 pd.read_sql(query,connection_object) # 从SQL/库导⼊数据...),但需要注意是loc是按索引,iloc参数只接受数字参数 df.ix[[:5],["col1","col2"]] # 返回字段col1col2前5条数据,可以理解loc和 iloc结合体...、最⼩值数据透视 df.groupby(col1).agg(np.mean) # 返回按列col1分组所有列均值,⽀持 df.groupby(col1).col2.agg(['min','max...df1.append(df2) # 将df2⾏添加到df1尾部 df.concat([df1,df2],axis=1,join='inner') # 将df2列添加到df1尾部,值对应...⾏与对应列都不要 df1.join(df2.set_index(col1),on=col1,how='inner') # 对df1列和df2列执⾏SQL形式join,默认按照索引来进⾏合并,如果

3.5K30

MySQL高级--性能优化之Explain分析SQL

1.6 显示可能应用在这张索引 possible_keys :查询涉及到字段若存在索引,则该索引将被列出,但不一定被查询实际使用。如果没有则为NULL。...1.7 实际用到索引 key: 实际使用索引,如果NULL,则没有使用索引。查询若使用了覆盖索引,则该索引仅出现在key列表。 我们真正使用是key存在索引。...这里创建是一个聚合索引(col1,col2,col3),第二个SQL没有提示使用文件内部排序是因为使用列按照了索引顺序(col1->col2->col3),但是第一个SQL没有使用到col2,产生了一个断层...这里创建是一个聚合索引(col1,col2),第二个SQL在 GROUP BY 时候没有按照聚合索引顺序,导致排序和分组都会提示相应错误,一定要按照索引顺序进行分组和排序。...// t1存在 index_col1_col2 聚合索引 select col1,clo2 from t1; // 我们只查询 col1col2,并且这两个字段数据都可以从索引获取,此时叫做索引覆盖

89530

SQL进阶-9-谓词exists使用

都不满足条件P SQL实现全称量化,需要将所有的行都满足条件P转成不存在不满足条件P行 案例1-查询没有参会人员 需求 从Meeting找出没有参会的人员 ?...-- 小于50分科目 需求2-查询分数 某个学生所有行记录如果科目是数学,则分数在80分以上;如果科目是语文,则分数在50以上 SQL实现 select distinct student_id...从下面的找出全部是1行 ?...SQL实现 -- 不推荐 select * from Tablename where col1 = 1 and col2 = 1 ... and col10 = 1; -- 当列属性多时候这个方法不适用...,col10) is null; 小结 SQL谓词指的是返回值真值函数 EXISTS与其他谓词不同,接受参数是集合;可以看做是一种高阶函数 SQL没有实现全称量词相当谓词,但是可以通过not

1K20

SQL Server 性能优化之——重复索引

概述 很多人都知道索引在数据库是有利有弊。像其他主流商业数据库一样SQL Server允许在一个列上重复创建索引。...因为SQL Server没有限制创建重复索引数量,只是限制数据库一个最多可以创建999重复索引,所以这就增加了数据库存在重复索引可能性。...列上存在重复索引的话,可能会明显损害数据库性能,因为SQL Server必须分别维护每一个重复索引。此外,SQL Server优化查询语句时,查询优化器也会考虑这个问题,这就导致一系列性能问题。...SQL系统目录: a. sys.indexes:包括表格对象(例如,、视图或值函数)索引或堆每一行 b. sys.objects:在数据库创建每个用户定义架构作用域内对象在该均对应一行...(IT) d) 系统 (S) e) SQL 函数 (TF) f) 用户 (U) g) 视图 (V) 有一种是列出所有索引在哪个上面,它们被扫描多少次,被更新多少次,在内存大小

2.3K90

SQL聚合函数 AVG

如果没有指定关键字,则为默认值。 DISTINCT - 可选 - DISTINCT子句,指定AVG只计算一个值唯一实例平均值。...AVG(DISTINCT BY(col2) col1)仅对col2值不同(唯一)记录col1字段值进行平均值。 但是请注意,不同col2值可能包含一个单独NULL值。...如果查询没有返回行,或者返回所有行数据字段值NULL, AVG返回NULL。 对单个值求平均值 如果提供给AVG所有表达式值都是相同,那么结果平均值取决于访问行数(除数)。...例如,如果所有行对某个特定列具有相同值,那么该列平均值就是一个计算值,它可能与个别列值略有不同。 为了避免这种差异,可以使用DISTINCT关键字。...avg of pi/1 优化 SQL优化AVG计算可以使用位片索引,如果这个索引是字段定义

3.2K51

搞懂这些SQL优化技巧,面试横着走

ON # 对笛卡尔积进行筛选 JOIN # 指定join,用于添加数据到on之后,例如...例如:1有50条数据,2有30亿条数据;如果扫描2,你品,那就先去吃个饭再说吧是吧。 4. 使用别名 当在SQL语句中连接多个时,请使用别名并把别名前缀于每个列名。...使用子查询可以一次性完成很多逻辑需要多个步骤才能完成 SQL 操作,同时也可以避免事务或者锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率连接(JOIN)..替代。...之所以更有效率一些,是因为 MySQL 不需要在内存创建临时来完成这个逻辑需要两个步骤查询工作。 4. 优化union查询 MySQL通过创建并填充临时方式来执行union查询。..., COL3 FROM TABLE WHERE COL3= 'TEST'; 5.拆分复杂SQL多个小SQL,避免大事务 简单SQL容易使用到MySQLQUERY CACHE; 减少锁时间特别是使用

89820

SQL优化最干货总结 – MySQL(2020最新版)

ON # 对笛卡尔积进行筛选 JOIN # 指定join,用于添加数据到on之后,例如left...例如:1有50条数据,2有30亿条数据;如果扫描2,你品,那就先去吃个饭再说吧是吧。 4. 使用别名 当在SQL语句中连接多个时,请使用别名并把别名前缀于每个列名。...使用子查询可以一次性完成很多逻辑需要多个步骤才能完成 SQL 操作,同时也可以避免事务或者锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率连接(JOIN)..替代。...之所以更有效率一些,是因为 MySQL 不需要在内存创建临时来完成这个逻辑需要两个步骤查询工作。 4. 优化union查询 MySQL通过创建并填充临时方式来执行union查询。..., COL3 FROM TABLE WHERE COL3= 'TEST'; 5.拆分复杂SQL多个小SQL,避免大事务 简单SQL容易使用到MySQLQUERY CACHE; 减少锁时间特别是使用

73110

HiveQL快速使用

Y必须分桶数量倍数或者因子,比如分桶数6,Y6,则表示只从桶抽取1个bucket数据;若Y3,则表示从桶抽取6/3(2)个bucket数据 order by select col1,other...从读取数据,执行where条件,以col1col2值做成组合key,其他列值作为value,然后在把数据传到同一个reduce,根据需要排序方式进行。...join 两个m,n之间按照on条件连接,m一条记录和n一条记录组成一条新记录。 join等值连接(内连接),只有某个值在m和n同时存在时。...left outer join左外连接,左边值无论是否在b存在时,都输出;右边值,只有在左边存在时才输出。 right outer join和left outer join相反。...left semi join类似exists。即查找a数据,是否在b存在,找出存在数据。

71510

Mysql执行计划(大章)

分析你查询语句或者结构性能瓶颈 语法 explain + sql语句 执行计划作用 l  读取顺序 l  数据读取操作操作类型 l  哪些索引可以使用 l  哪些索引被实际使用 l  之间引用...ID列 ID列:描述select查询序列号,包含一组数字,表示查询执行select子句或操作顺序 根据ID数值结果可以分成一下三种情况 l  id相同:执行顺序由上至下 l  id不同:如果是子查询...如果NULL,则没有使用索引 查询若使用了覆盖索引,则该索引和查询select字段重叠 这里覆盖索引非常重要,后面会单独来讲 ? ?...,col1匹配t2col1col2匹配了一个常量,即 'ac' 其中 【shared.t2.col1】 【数据库..列】   Rows 根据统计信息及索引选用情况,大致估算出找到所需记录所需要读取行数...MySQL无法利用索引完成排序操作称为“文件排序” 当发现有Using filesort 后,实际就是发现了可以优化地方 ?

74021

MySQL - SQL优化干货总结(吐血版)

ON # 对笛卡尔积进行筛选 JOIN # 指定join,用于添加数据到on之后,例如...例如:1有50条数据,2有30亿条数据;如果扫描2,你品,那就先去吃个饭再说吧是吧。 4. 使用别名 当在SQL语句中连接多个时,请使用别名并把别名前缀于每个列名。...使用子查询可以一次性完成很多逻辑需要多个步骤才能完成 SQL 操作,同时也可以避免事务或者锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率连接(JOIN)..替代。...之所以更有效率一些,是因为 MySQL 不需要在内存创建临时来完成这个逻辑需要两个步骤查询工作。 4. 优化union查询 MySQL通过创建并填充临时方式来执行union查询。..., COL3 FROM TABLE WHERE COL3= 'TEST'; 5.拆分复杂SQL多个小SQL,避免大事务 简单SQL容易使用到MySQLQUERY CACHE; 减少锁时间特别是使用

1.2K40

Pandas速查卡-Python数据科学

文件 df.to_sql(table_name, connection_object) 写入一个SQL df.to_json(filename) 写入JSON格式文件 创建测试对象 用于测试代码...) 从一列返回一组对象值 df.groupby([col1,col2]) 从多列返回一组对象值 df.groupby(col1)[col2] 返回col2平均值,按col1值分组(平均值可以用统计部分几乎任何函数替换...) df.pivot_table(index=col1,values=[col2,col3],aggfunc=max) 创建一个数据透视,按col1分组并计算col2和col3平均值 df.groupby...(col1).agg(np.mean) 查找每个唯一col1所有列平均值 data.apply(np.mean) 在每个列上应用函数 data.apply(np.max,axis=1) 在每行应用一个函数...) df1.join(df2,on=col1,how='inner') SQL类型将df1列与df2列连接,其中col行具有相同值。

9.2K80

Oracle连接学习笔记

D2 SQL>select * from t1,t2 where t1.id=t2.id; id col1 col2 ---- ---- ---- A A1 A2 C C1...C2 D D1 D2 判断标准:SQL没有定义外连接left outer join、right outer join、full outer join以及(+)符合,这种SQL统一叫内连接...Nested sort join,驱动被访问0或1次,被驱动被访问0或者n次,n是驱动返回结果集条数 然后同样可以进行hash join、merge join实践,hash join用/*+...leading(t1) use_hash(t2) */ Hash join驱动被访问0或者1次,被驱动也一样 merge sort join驱动被访问0或者1次,被驱动也一样 (2)连接顺序影响...对于前面的用t1驱动情况,现在换一下顺序, SQL>SELECT /*+ leading(t2) use_nl(t1)*/ * FROM t1, t2 WHERE t1.id = t2.t1_id

90040

2020最新最全面的SQL优化干货总结

ON # 对笛卡尔积进行筛选 JOIN # 指定join,用于添加数据到on之后,例如left...④使用别名 当在 SQL 语句中连接多个时,请使用别名并把别名前缀于每个列名。这样就可以减少解析时间并减少哪些友列名歧义引起语法错误。...例如: SELECT col1, col2, COUNT(*) FROM table GROUP BY col1, col2 ORDER BY NULL ; ③优化 join 语句 MySQL 可以通过子查询来使用...使用子查询可以一次性完成很多逻辑需要多个步骤才能完成 SQL 操作,同时也可以避免事务或者锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率连接(JOIN)..替代。...,是因为 MySQL 不需要在内存创建临时来完成这个逻辑需要两个步骤查询工作。

60100
领券