ORACLE MYSQL中join 字段类型不同索引失效的情况
关于JOIN使用不同类型的字段类型,数据库可能进行隐士转换,MYSQL ORACLE都是如此,下面使用一个列子来看看,脚本如下:mysql:drop table testjoin1;drop table testjoin2;create table testjoin1(id int, name varchar(20));create table testjoin2(id varchar(20),name varchar(20),key(id);oracle:drop tab...
关于MYSQL DML(UPDATE DELETE)中的子查询问题和ERROR 1093 (HY000)错误
从5.6开始MYSQL的子查询进行了大量的优化,5.5中只有EXISTS strategy,在5.7中包含如下:IN(=ANY)--Semi-join --table pullout(最快的,子查询条件为唯一键) --first match --semi-join materialization --loosescan --duplicateweedout--Materialization--EXISTS strategy(最慢的)N...
MYSQL 中的GROUP BY 的方式 (1)(loose index scan松散扫描 tight index scan紧凑扫描)
水平有限有误请指出,转载请说明出处测试脚本:create table tgrploose(p_id int primary key auto_increment,s_id1 int,s_id2 int,s_id3 int, key(s_id1,s_id2,s_id3));create table tgrpnloose(p_id int primary key auto_increment,s_id1 int,s_id2 int,s_id3 int, key(s_id1,s_id2,s_id3)); delimiter //...
C语言 C语言野指针
关于野指针也就是进行了内存free后,其指针变量指向的内存空间已经free掉了,但是指针变量其值并没有释放,可能造成二次释放的导致程序崩溃。考虑如下的程序点击(此处)折叠或打开#include<stdio.h>#include<stdlib.h>#include<string.h>...
MYSQL实现ORDER BY LIMIT的方法以及优先队列(堆排序)
一、MYSQL中的LIMIT和ORACLE中的分页在MYSQL官方文档中描述limit是在结果集中返回你需要的数据,它可以尽快的返回需要的行而不用管剩下的行,在ORACLE中也有相关的语法比如 12C以前的rownun
从排序原理到MYSQL中的排序方式
本文参考MYSQL官方文档,算法书籍,部分为自己观点可能有误,如果有误请指出共同参考转载请说明出处,谢谢!一、MYSQL排序可能用到的排序算法从MYSQL官方文档和源码的接口来看MYSQL使用BUFFER内部快速排序算法,外部多路归并排序算法,相应的接口函数为filesort()函数,注意filesort()是一个总的接口,归并排序也包含...
LINUX系统编程 SWAP原理以及和数据库(MYSQL ORACLE)关系
作为一位DBA长期以来一直受到一些关于SWAP使用的问题,比如如下问题:1、为了我 free 中buffer/cache明明还有空间为什么SWAP使用了?2、哪个(些)进程使用了最多的SWAP?3、如果在ORACLE或者MYSQL避免使用SWAP?4、为什么要使用直接路径绕过操作系统缓冲(O_DIRECT)?5、ORACLE 11G使用tmpfs虚拟文件系统,内存可能被SWA...
LINUX系统编程 LINUX地区(locale)设置
LINUX本地的locale设置使用/etc/sysconfig/i18n进行设置,这里的i18n是术语internationalization的缩写i加上18字符在加上n,这样更为方便,同时区一样LINUX地区系统维护在/usr/share/locale中,该目录下每个目录都是特定地区信息的集合,目录的约定为:language(ISO语言代码)[_territory(ISO国家代码)[.codeset(字符集)...
LINUX时区设置及与数据库之间(ORACLE MYSQL)的关系
LINUX时区 LINUX时区由/etc/localtime设置,其可以是一个指向/usr/share/zoneinfo下文件的软连接,在/usr/share/zoneinfo目录下每个文件都包含了特定地区的时区信息,很多都分为洲目录/地区目录 如:UTC:GMT标准时间+0时区CET:欧洲中部时间EST:美国东部标准时间Asia/Shanghai:中国上海+8时区 &nb...
LINUX系统编程 关于SDTIO库缓冲区
我们知道标准C中的文件读取的函数比如printf,fwrite等函数,实际都是调用OS级别的API,比如LINUX下就是wirte,read函数,而write read函数在用户态下是没有缓冲的,当然在内核态有OS CACHE/OS BUFFER,所以某些直接调用wirte,read的程序肯定会分配一个缓冲区,特别是O_DIRECT这种方式下,内核态的OS CACHE和OS BUFFER...
从顺序随机I/O原理来讨论MYSQL MRR NLJ BNL BKA
从顺序随机I/O原理来讨论MYSQL MRR NLJ BNL BKA本文只讨论innodb存储引擎,并且有部分观点为作者观点,如果有误请指出。一、机械磁盘原理 机械盘由动臂,盘片,读写磁头,主轴组成,磁头是固定不能动的,要读取相应的扇区只能通过盘片的 旋转。 每一个盘片为双面,每一个面...
LINUX系统编程 LINUX 虚拟内存
LINUX 虚拟内存以32位操作系统为例子,因为64位系统虚拟地址过大为2^64,32位仅仅为2^32=4G更利于描述,但是原理东西都一样这首先要从程序和进程之间的关系开始,我们一般写好一段C\C++代码编译后仅仅为可执行文件假设为a.out,我们运行a.out的时候,这个才叫进程,进程是OS级别抽象的实体(PCB task_struct结构体),为程...
MYSQL SOURCE报错 ERROR: ASCII
由 ASCII '\0' 引起的MYSQL SOURCE错误今天在群里面有一个朋友给出一个错误:source test.sqlERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expec...
ASCII 中的控制字符
Function/Control Code/Character in ASCIIVersion: 2011-02-15Author: green-waste (at) 163.com【什么是 Function Code 功能码或 Function Character 功能字符】ASCII 字符集,大家都知道吧,最基本的包含了 128 个字符。其中前 32 个, ...
LINUX errno大全
查看错误代码errno是调试程序的一个重要方法。当linuc C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它...
MYSQL INNODB 组合索引分支节点数据解析
1、本文证明组合索引的所有键值在分支节点(非叶子结点也进行了存储)。2、本文给出B+树结构如何进行验证其B+树结构关于B树结构(不是B+树)可以参考:http://blog.itpub.net/7728585/viewspace-2126929/脚本:mysql> create table testzh(id int primary key auto_increment ,id2 int,id3 int,name varchar(20), ...
MYSQL merge union merge sort_union 的不同
今天看到MYSQL手册的Index Merge Optimization,不禁有一些想法,所以记录如下文先来解释下2种方式不同:这两种方式都使用一个table中的不同二级索引进行,注意是单个表。merge union :在使用or的时候如果二级索引包含了所有的key part,那么就可以得到排序好的聚集索引的键值或者ROWID,那么简单的union 去重就可以了...
ORACLE DATE类型和TIMESTAMP类型DUMP换算
date 类型:十进制:120,115,8,14,14,46,46 7 BYTE120 世纪字节 +100存储115 年字节 +100存储8 月字节 源数据存储14 日字节 源数据存储14 小时字节 +1存储46 分字节 +1存储46 秒字节 +1存储120-100=20115-...
ORACLE 部分HINT
本文章为学习笔记,为了方便查阅,收录于此大部分为以前学习基于CBO的ORACLE优化一书(崔华著),加上自己的实验如果记录有误请指出1、gather_plan_statistics HINT 用于记录SQL执行时的额外信息,如果实际执行次数,执行时间,物理逻辑读等。 select /*+ gather_plan_statistics */ count(*) from pp...
ORACLE 索引和MYSQL INNODB 辅助索引对NULL的处理区别
ORACLE 索引和MYSQL INNODB 辅助索引对NULL的处理我们清楚ORACLE中的b+索引是对键值的NULL进行存储的,以致于我们 IS NULL这种肯定是用不到索引的,而且在某些情况下,比如select count(b) from tab ;这种如果b列没有显示的申明为not null属性也是用不到的,必须加上not null或者在where条件中加上b is not null。很...