随笔分类 - Mysql
摘要:1. 排序问题 正常如果按照某字段升序排列,空值会排到有值的前面;如果逆序排序空值排在最后。 有时候我们需要该字段为空的行数据要排到最后面去,这时只需要:
阅读全文
摘要:现有的数据库系统,绝大多数是以结构化数据检索的主要目标,因此实现相对简单。比如数值检索,可以建立一张排序好的索引表,这样速度可以得到提高。但对于非结构化数据,即全文数据,要想实现检索,一般都是采用模糊查询的方式实现的,这种方式不仅速度慢,而且容易将汉字错误切分,于是产生了全文检索技术。 全文检索技术
阅读全文
摘要:今天,在新装的mysql上限制只能通过127.0.0.1登录之后怎么也登录不上。 1.在my.cnf最后一行(或者mysqld下面)设置跳过密码验证的过程(windows是my.ini) 2.重启mysql服务 3.直接输入mysql即可 4.修改密码: 5.使修改生效 6.修改完之后记得去掉跳过密
阅读全文
摘要:经常听说mysql数据库是集成在系统中,也一直不太明白集成的概念。今天才明白集成的概念就是将mysql所有的文件放到一个文件夹下放到系统中,也就是将mysql采用目录迁移部署的方式进行安装。在上一篇研究了mysql的数据存储结构之后,也研究了mysql作为目录部署以及安装为mysql服务的方法。 1
阅读全文
摘要:数据库常用的两种引擎有Innodb和Myisam,关于二者的区别参考:https://www.cnblogs.com/qlqwjy/p/7965460.html 1.关于数据库的存储在两种引擎的存储是一样的 数据库的存储的都是在data目录下新建一个与数据库名字相同的文件夹,且每个文件夹内默认存放一
阅读全文
摘要:在linux环境下,mysql默认表明是区分大小写的,我们可以查看全局变量发现: lower_case_file_system 是一个只读参数,无法被修改,这个参数是用来告诉你在当前的系统平台下,是否对文件名大小写敏感。 lower_case_table_names: 此参数不可以动态修改,必须重启
阅读全文
摘要:0.表结构如下:(包含两个索引) 前提是会使用explain分析SQL语句: 2.强制走索引 (1)直接查询使用的是userCodeIndex (2)强制使用主键索引 语法: 注意:INDEX(indexName)里面的参数是index的名称,而不是列名,如果不知道index名称可以通过下列方式查询
阅读全文
摘要:子查询就是指在一个select语句中嵌套另一个select语句。any,in,some,all分别是子查询关键词之一, any 可以与=、>、>=、<、<=、<>结合起来使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的任何一个数据。 all可以与=、>、>=、<、<=、<>结合是来使
阅读全文
摘要:今天想的利用explain与progiling分析下语句然后进行优化。本文重点是如何通过explain与profiling分析SQL执行过程与性能。进而明白索引的重要性。 表的关系如下所示: 原始的查询SQL:(根据用户的ID查看用户的权限) 不加索引的分析以及测试 1.分析 首先将三个表的索引全部
阅读全文
摘要:比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 这里
阅读全文
摘要:1.int型子查询陷阱 如下两个表: 2表的数据量: 要求查询班级名称是'3'的学生? 1.用in查询: 花费了0.17秒,用explain分析语句:发现也是class表是全局扫描,user表用了class_id索引。 解释:我们理解的是先查询in里面的班级编号,然后利用班级编号去查询外面的id和n
阅读全文
摘要:在长期的数据更改过程中, 索引文件和数据文件,都将产生空洞,形成碎片.(不停的删除修改导致) 解决办法: (1)我们可以通过一个nop操作(不产生对数据实质影响的操作), 来修改表. 比如: 表的引擎为innodb , 可以 alter table xxx engine innodb(修改表的引擎类
阅读全文
摘要:MySQL 数据表主要支持六种类型 ,分别是:BDB、HEAP、ISAM、MERGE、MYISAM、InnoBDB。 这六种又分为两类,一类是”事务安全型”(transaction-safe),包括BDB和InnoDB;其余都属于第二类,称为”非事务安全型”(non-transaction-safe
阅读全文
摘要:mysql的key和index多少有点令人迷惑,这实际上考察对数据库体系结构的了解的。 1).key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等。 pr
阅读全文
摘要:索引与排序 排序可能发生2种情况: 1: 对于覆盖索引,直接在索引上查询时,就是有顺序的, using index 2: 先取出数据,形成临时表做filesort(文件排序,但文件可能在磁盘上,也可能在内存中) 我们的争取目标 取出来的数据本身就是有序的! 利用索引来排序. 比如: goods商品表
阅读全文
摘要:limit 翻页原理 limit offset,N, 当offset非常大时, 效率极低, 原因是mysql并不是跳过offset行,然后单取N行, 而是取offset+N行,返回放弃前offset行,返回N行. 效率较低,当offset越大时,效率越低 通过show profile可以查看: 优化
阅读全文
摘要:索引覆盖 是指 如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要回行到磁盘再找数据.这种查询速度非常快,称为”索引覆盖”,比平时的查询少一次到磁盘读数据的操作。(索引正好覆盖到查询的数据) 例如下面:
阅读全文
摘要:要想优化一条 Query,我们就需要清楚的知道这条 Query 的性能瓶颈到底在哪里,是消耗的 CPU计算太多,还是需要的的 IO 操作太多?要想能够清楚的了解这些信息,在 MySQL 5.0 和 MySQL 5.1正式版中已经可以非常容易做到了,那就是通过 Query Profiler 功能。 M
阅读全文
摘要:在网站开发过程中,有些时候我们需要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话连接数,当前MySQL服务器执行的慢查询数,当前MySQL执行了多少SELECT语句、执行了多少UPDATE/DELETE/INSERT语句等统计信息,从而便于我们根据当前
阅读全文
摘要:必须为主键字段创建一个索引,这个索引就是所谓的"主索引"。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE。 首先明白两句话: innodb的次索引指向对主键的引用 (聚簇索引) myisam的次索引和主索引 都指向物理行 (非聚簇索引) 聚簇索引是对磁盘上实
阅读全文