生成连续编号

CONNECT BY (Oracle)、 WITH 子句(DB2、SQL Server)

EXCEPT

返回第一个表中有、第二个表中没有的数据
https://www.cnblogs.com/951106Nancy/p/9290539.html

Oracle的overlaps

用来查询重叠的时间区域。

COALESCE

标准SQL,接受多个值,返回第一个不为null

GROUP_CONCAT()

https://www.yiibai.com/mysql/group_concat.html

  1. GROUP_CONCAT(DISTINCT expression
  2. ORDER BY expression
  3. SEPARATOR sep);

窗口函数 SUM OVER

移动累计值

在SQL进阶教程

  1. /* 求移动累计值(1):使用窗口函数 */
  2. SELECT prc_date, prc_amt,
  3. SUM(prc_amt) OVER (ORDER BY prc_date
  4. ROWS 2 PRECEDING) AS onhand_amt
  5. FROM Accounts;

oracle窗口函数 LEAD OVER去查看下一行的BEGIN_DATE,

mariadb窗口函数

mairadb10.2开始提供了ROW_NUMBER()函数

Oracle窗口函数

LEAD OVER

LEAD OVER 读取与当前行相关的下一个员工的工资

ROW_NUMBER OVER

DENSE_RANK

使用窗口函数 NTILE创建4个桶

  1. select ntile(4) over(order by empno) grp, empno, ename from emp

MySQL样例数据库sakila

http://downloads.mysql.com/docs/sakila-db.zip

检查冗余索引

pt-duplicate-key-checker工具可以检测表中重复的索引

MySQL工具箱

Download Percona Toolkit

文档| https://www.percona.com/doc/percona-toolkit/LATEST/index.html

pt-upgrade

检查计划中的索引变更

pt-index-usage

找出哪些索引为使用,还可以了解查询的执行计划。

EXPLAIN

Extra

Extra出现了Using where 这表示MySQL服务器存储引擎返回行以后在应用WHERE过滤条件。