草庐IT

join_forum

全部标签

记一次MySql唯一索引在left join连表查询没走索引的问题

在新建一张账单结算信息表bill_settlement_info的时候,建立的唯一索引uk_bill_no(bill_no,tenant_id)。由于列表查询用到该表的字段。所以在sql中自然做了jeftjoin查询。on条件是bill.billNo=bill_settlement_info.billNo。自然认为这样的链表会走bill_settlement_info的索引。但是上线生产后,由于生产数据增长很快。立马发现列表查询时,使用bill_settlement_info表中的字段过滤数据时。查询超时。排查后发现是慢SQL导致。使用explan分析查询语句发现是连表bill_settlem

从join的实现窥探MySQL迭代器

以如下leftjoin查询语句为范例:select*fromt1leftjoint2ont1.c=t2.a;以下初始化数据:1DROPTABLEIFEXISTS`t1`;2CREATETABLE`t1`(3`a`intDEFAULTNULL,4`b`varchar(20)DEFAULTNULL5)6INSERTINTO`t1`VALUES(1,'a');7INSERTINTO`t1`VALUES(1,'b');8INSERTINTO`t1`VALUES(4,'a');9INSERTINTO`t1`VALUES(5,'a');1011DROPTABLEIFEXISTS`t2`;12CREATET

从join的实现窥探MySQL迭代器

以如下leftjoin查询语句为范例:select*fromt1leftjoint2ont1.c=t2.a;以下初始化数据:1DROPTABLEIFEXISTS`t1`;2CREATETABLE`t1`(3`a`intDEFAULTNULL,4`b`varchar(20)DEFAULTNULL5)6INSERTINTO`t1`VALUES(1,'a');7INSERTINTO`t1`VALUES(1,'b');8INSERTINTO`t1`VALUES(4,'a');9INSERTINTO`t1`VALUES(5,'a');1011DROPTABLEIFEXISTS`t2`;12CREATET

如何干涉MySQL优化器使用hash join

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。前言实验总结前言数据库的优化器相当于人类的大脑,大部分时候都能做出正确的决策,制定正确的执行计划,走出一条高效的路,但是它毕竟是基于某些固定的规则、算法来做的判断,有时候并没有我们人脑思维灵活,当我们确定优化器选择执行计划错误时该怎么办呢,语句上加hint,提示它选择哪条路是一种常见的优化方法。我们知道Oracle提供了比较灵活的hint提示来指示优化器在多表连接时选择哪种表连接方式,比如use_nl,no_use_nl控制是否使用NestLoopJo

如何干涉MySQL优化器使用hash join

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。前言实验总结前言数据库的优化器相当于人类的大脑,大部分时候都能做出正确的决策,制定正确的执行计划,走出一条高效的路,但是它毕竟是基于某些固定的规则、算法来做的判断,有时候并没有我们人脑思维灵活,当我们确定优化器选择执行计划错误时该怎么办呢,语句上加hint,提示它选择哪条路是一种常见的优化方法。我们知道Oracle提供了比较灵活的hint提示来指示优化器在多表连接时选择哪种表连接方式,比如use_nl,no_use_nl控制是否使用NestLoopJo

如何使用 SQL INNER JOIN 联结两个或多个表

目录一、联结1.1关系表1.2为什么使用联结二、创建联结2.1WHERE子句的重要性2.2内联结2.3联结多个表三、小结本文介绍什么是SQLINNERJOIN联结,为什么使用联结,如何编写使用联结的SELECT语句。并讲述了一些关系数据库设计的基本知识,包括等值联结(也称为内联结)这种最常用的联结。一、联结SQL最强大的功能之一就是能在数据查询的执行中联结(join)表。联结是利用SQL的SELECT能执行的最重要的操作,很好地理解联结及其语法是学习SQL的极为重要的部分。在能够有效地使用联结前,必须了解关系表以及关系数据库设计的一些基础知识。下面的介绍并不能涵盖这一主题的所有内容,但作为入门

如何使用 SQL INNER JOIN 联结两个或多个表

目录一、联结1.1关系表1.2为什么使用联结二、创建联结2.1WHERE子句的重要性2.2内联结2.3联结多个表三、小结本文介绍什么是SQLINNERJOIN联结,为什么使用联结,如何编写使用联结的SELECT语句。并讲述了一些关系数据库设计的基本知识,包括等值联结(也称为内联结)这种最常用的联结。一、联结SQL最强大的功能之一就是能在数据查询的执行中联结(join)表。联结是利用SQL的SELECT能执行的最重要的操作,很好地理解联结及其语法是学习SQL的极为重要的部分。在能够有效地使用联结前,必须了解关系表以及关系数据库设计的一些基础知识。下面的介绍并不能涵盖这一主题的所有内容,但作为入门

Golang 源码解读 01、深入解析 strings.Builder、strings.Join

本文从我的《TheGoProgrammingLanguage》学习笔记中分离出,单独成一篇文章方便查阅参考。strings.Builder源码解析存在意义使用\(strings.Builder\),避免频繁创建字符串对象,进而提高性能\(Source\file\)https://go.dev/src/strings/builder.go与许多支持\(string\)类型的语言一样,\(golang\)中的\(string\)类型也是只读且不可变的(\(string\)类型笔记 Goxmas2020学习笔记04、Strings-小能日记-博客园 )。因此,通过循环字符串切片拼接字符串的方式会导致

Golang 源码解读 01、深入解析 strings.Builder、strings.Join

本文从我的《TheGoProgrammingLanguage》学习笔记中分离出,单独成一篇文章方便查阅参考。strings.Builder源码解析存在意义使用\(strings.Builder\),避免频繁创建字符串对象,进而提高性能\(Source\file\)https://go.dev/src/strings/builder.go与许多支持\(string\)类型的语言一样,\(golang\)中的\(string\)类型也是只读且不可变的(\(string\)类型笔记 Goxmas2020学习笔记04、Strings-小能日记-博客园 )。因此,通过循环字符串切片拼接字符串的方式会导致

PostgreSQL的查询技巧: 零除, GENERATED STORED, COUNT DISTINCT, JOIN和数组LIKE

零除的处理用NULLIF(col,0)可以避免复杂的WHEN...CASE判断,例如ROUND(COUNT(view_50.amount_in)::NUMERIC/NULLIF(COUNT(view_50.amount_out)::NUMERIC,0),2)ASout_divide_in,使用COLA/NULLIF(COLB,0)后,如果COLB为0,产生的输出就是NULL空数组解析为默认值使用jsonb_array_elements_text()可以将一个JSONB类型的列解析为多行--这是一个和聚合背道而驰的函数,在处理数组时特别有用.但是在使用中,往往需要全局统计,不单单是统计带内容的数