随笔分类 - MySQL
摘要:索引的分类 BTree索引(实际上有B-Tree,B+Tree(Innodb),T-Tree等类型(NDB),各种实现细节有区别,但是统称BTree索引) hash索引(Memory引擎默认) 空间数据索引 全文索引 其他索引类别 实际使用中常见的是BTree索引(Innodb和Myisam都是),
阅读全文
摘要:首先要清楚:聚簇索引并不是一种单独的索引类型,而是一种存储数据的方式。 聚簇索引在实际中用的很多,Innodb就是聚簇索引,Myisam 是非聚簇索引。 在之前我想插入一段关于innodb和myisam的数据文件的对比: innodb一张表在硬盘上通过两个文件存储:tablename.frm,tab
阅读全文
摘要:原文链接:https://www.jianshu.com/p/2ab2c0dc3cb5 在mysql当中,字符串类型间进行加减乘除运算的时候,会截取字符串以数字开头的那一部分数字进行运算,如果字符串前面没有数字,那么就只能截取的数值为0,那么进行加减的时候结果都是0,进行乘除的时候结果都是NULL,
阅读全文
摘要:A表: 100条数据 , B: 10条数据 select * from A where id in ( select aid from B ) 先执行括号里面的查询,然后执行外面,总共需要查询的次数的 B+1=11次需要注意的是 括号里面的查询会缓存到内存中 select * from A wher
阅读全文
摘要:在一个教育系统里面,有 科目表 ,章节表(每一科目对应若干大章节),小节表(每一大章节下面有若干小节),习题表(每一小节对应若干习题), 在后台管理系统中 有这样几个功能要实现,在 科目列表页面中 可以删除某一科目,在章节列表页面中,可以删除某一章节,小节列表和习题列表同样, 那么有一个问题要先提出
阅读全文
摘要:现在有两个表,table1和table2,table1有1千万数据(id 主键索引),table2有三条数据(uid字段 3,5,7); 眨眼一看感觉这条语句应该很快;可能你会一厢情愿的以为 先执行括号里面的语句,然后在执行外层的select;外层的select用上了 id主键速度应该飞起来才对;
阅读全文
摘要:碎片整理: mysql数据一开始是在磁盘上顺序存放的,如果数据表有频繁的update改动,那么数据就会形成很多碎片,拖慢速度和不利于索引; 优化碎片有两种方式: alter table user engine innodb;其实user这个表原先也是innodb的,这句话看上去没有任何意义,但是my
阅读全文
摘要:假设有一个千万量级的表,取1到10条数据; 这两条语句查询时间应该在毫秒级完成; 你可能没想到,这条语句执行之间在5s左右; 为什么相差这么大? 可能mysql并没有你想的那么智能,比如你要查询 300w开始后面10条数据;mysql会读取300w加10条这么多的数据,只不过 过滤后返回最后10条而
阅读全文
摘要:首先 索引长度和区分度是相互矛盾的, 索引长度太短,那么区分度就很低,吧索引长度加长,区分度就高,但是索引也是要占内存的,所以我们需要找到一个平衡点; 那么这个平衡点怎么来定? 比如用户表有个字段 username ,要给他加索引,问题是索引长度多少合适? 其实我们知道 百家姓里面有百多个姓 ,但是
阅读全文
摘要:今天需要在本地测试系统功能,因为本地没有数据库,就需要在程序里面连接远程数据库; 先用ssh登录远程服务器,用root连上数据库看看情况; mysql> select Host,User,Password from mysql.user; + + + + | Host | User | Passwo
阅读全文
摘要:首先你要知道; 无论是Myisam和Innodb引擎,如果在建表的时候没有显示的定义一行主键列的话,他内部都会自动创建一个隐藏的主键索引; 主键索引以外的索引假设称为次索引;首先Myisam和Innodb两个都是默认采用的btree索引,可以脑补一颗二叉树; myisam引擎的数据在物理磁盘上是按照
阅读全文
摘要:mysql中 myisam,innodb默认使用的是 Btree索引,至于btree的数据结构是怎样的都不重要,只需要知道结果,既然是索引那这个数据结构最后是排好序;就像新华字典他的目录就是按照a,b,c..这样排好序的;所以你在找东西的时候才快,比如你找 “中” 这个字的解释,你肯定就会定位到目录
阅读全文
摘要:比如年龄这个字段可以使用 1990-03-15 也可以用 19900315表示在列类型上可以选择 char 和 int;如果一个字段可以选择多种类型,尽量选择一个更快的类型;字段类型优先级 整型>date,time>char,varchar>blob整型,time运算快,节省空间char/varch
阅读全文
摘要:通过脚本,刷新观察mysql的status,观察是否有周期性故障活波动,一般由访问高峰或者缓存失效引起,家缓存并更改缓存失效策略,是失效时间分散或页面定时失, 您也可以使用mysqladmin processlist语句得到此信息。如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的
阅读全文
摘要:If your app was written for older versions of MySQL and is not compatible with strict SQL mode in MySQL 5.7, you can disable strict SQL mode. For exam
阅读全文
摘要:先说一下为什么要分表当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1,接收到sql;2,把sql放到排队队列中 ;3,执行sql;4,返回执行结果
阅读全文
摘要:14.1.1 创建存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body 其中,sp_name参数是存储过程的名称;proc_para
阅读全文
摘要:唯一索引(unique index)强调唯一,就是索引值必须唯一。 create unique index [索引名] on 表名 (列名);alter table 表名 add unique index [索引名] (列名);删除索引:drop index 索引名 on 表名;alter tabl
阅读全文