随笔分类 -  Mysql

如何查询最后一行的记录
摘要:Select * from 表名 order by id desc limit 1; 例如:Select * from student order by sno desc limit 1; 表student所有数据如下: 阅读全文

posted @ 2021-07-10 18:50 Eleanor123 阅读(114) 评论(0) 推荐(1)

为什么MySQL自增id不连续?
摘要:唯一键冲突 事务回滚 批量申请自增id的策略 阅读全文

posted @ 2021-07-10 18:48 Eleanor123 阅读(39) 评论(0) 推荐(1)

MySQL字符集
摘要:1、MySQL字符集 MySQL服务器可以支持多种字符集,可以使用show character set命令查看所有MySQL支持的字符集。 在同一台服务器,同一个数据库,甚至同一个表的不同字段都可以指定使用不同的字符集。 MySQL的字符集包括字符集(character)和校对规则(collatio 阅读全文

posted @ 2021-07-10 18:42 Eleanor123 阅读(361) 评论(0) 推荐(1)

MySQL有哪些优化策略?
摘要:(1)优化count查询 Count是一个特殊的函数,它可以统计某个列值的数量,在统计列值时要求列值是非空的,不会统计null值。如果count中指定了列或列的表达式,则统计的就是这个表达式有值的结果数,而不是null。 Count的另一个作用是统计结果集的行数,当MySQL确定括号内的表达式不可能 阅读全文

posted @ 2021-07-10 18:23 Eleanor123 阅读(148) 评论(0) 推荐(1)

explain的字段有哪些?
摘要:Id:表示select子句或者操作表的顺序,执行顺序从大到小执行,当id一样时,执行顺序从上往下。 Select_type:表示查询中每个select子句的类型,例如simple表示不包含子查询、表连接或其他复杂语法的简单查询,primary表示复杂查询的最外层查询,subquery表示在selec 阅读全文

posted @ 2021-07-10 18:04 Eleanor123 阅读(236) 评论(0) 推荐(1)

如何定位低效SQL?
摘要:可以通过两种方式来定位执行效率较低的SQL语句。一种通过慢查询日志定位,可以通过慢查询日志定位那些已经执行完毕的SQL语句。 另一种是使用show processlist查询,慢查询日志在查询结束后才记录,所以在应用反应执行效率出现问题的时候查询慢查询日志不能定位问题,此时可以使用show proc 阅读全文

posted @ 2021-07-10 17:43 Eleanor123 阅读(183) 评论(0) 推荐(1)

索引失效的情况有哪些?
摘要:如果索引列出现了隐式类型转换,则MySQL不会使用索引。常见的情况是在SQL的where条件中字段类型为字符串,其值为数值,如果没有加引号那么MySQL不会使用索引。 如果where条件中含有or,除非or前使用了索引列而or之后是非索引列,索引会失效。 MySQL不能在索引中执行like操作,这是 阅读全文

posted @ 2021-07-10 17:38 Eleanor123 阅读(288) 评论(0) 推荐(1)

trace的作用?
摘要:从MySQL5.6开始,可通过trace文件进一步获取优化器是如何选择执行计划的,在使用时需要先打开设置,然后执行一次SQL,最后查看information_schema.optimizer_trace表的内容,该表为联合i表,只能在当前会话进行查询,每次查询后返回的都是最近一次执行的SQL语句。 阅读全文

posted @ 2021-07-08 23:57 Eleanor123 阅读(140) 评论(0) 推荐(1)

show profile的作用?
摘要:通过show profile可以分析SQL语句性能消耗,例如查询到SQL会执行多少时间,并显示CPU、内存使用量,执行过程中系统锁即表锁的花费时间等信息。例如show profile cpu/memory/block IO for query n分别查询id为N的SQL语句的CPU、内存以及IO的消 阅读全文

posted @ 2021-07-08 23:53 Eleanor123 阅读(86) 评论(0) 推荐(1)

索引的使用原则
摘要:1、建立索引 对查询频次比较高且数据量比较大的表建立索引。索引字段的选择,最佳候选列应当从where子句的条件中提取,如果where子句中的组合比较多,应当挑选最常用,过滤效果最好的列的组合。业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。 2、使用前缀索引 索引列开始的部分字符 阅读全文

posted @ 2021-07-08 23:46 Eleanor123 阅读(566) 评论(0) 推荐(1)

MySQL主从复制的步骤
摘要:(1)在主库上把数据更改记录到二进制日志中。 每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志中。MySQL会按事务提交的顺序而非每条语句的执行顺序来记录二进制日志,在记录二进制日志后,主库会告诉存储引擎可以提交事务了。 (2)备库将主库的日志复制到自己的中继日志中。 备库首先启 阅读全文

posted @ 2021-07-08 00:08 Eleanor123 阅读(84) 评论(0) 推荐(1)

什么是聚簇索引
摘要:聚簇索引不是一种索引类型,而是一种数据存储方式。innoDB的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。当表有聚簇索引时,它的行数据实际上存放在索引的叶子页中,因为无法同时把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。 优点: 可以把相关数据保存在一起,数据访问就更快 阅读全文

posted @ 2021-07-07 23:55 Eleanor123 阅读(2037) 评论(0) 推荐(2)

什么是全文索引?
摘要:通过数值比较、范围过滤等就可以完成绝大数需要的查询,但如果希望通过关键字匹配进行查询,就需要基于相似度的查询,而不是精确的数值比较,全文索引就是为这种场景设计的。 myISAM的全文索引是一种特殊的B-Tree索引,一共有两层。第一层是所有关键字,然后对每一个关键字的第二层,包含的是一组相关的“文档 阅读全文

posted @ 2021-07-07 23:47 Eleanor123 阅读(1789) 评论(0) 推荐(1)

Memory
摘要:如果要快速访问数据且这些数据不会被修改,重启以后丢失也没有关系,那么使用memory表是非常有用的。Memory表至少要比myISAM表快一个数量级,因为所有数据都保存在内存,不需要磁盘IO,memory表的结构在重启后会保留,但数据会丢失。 Memory表适合的场景:查找或者映射表、缓存周期性聚合 阅读全文

posted @ 2021-07-07 23:41 Eleanor123 阅读(78) 评论(0) 推荐(1)

myISAM
摘要:MySQL5.1之前,myISAM是默认存储引擎,myISAM提供了大量的特性,包括全文索引、压缩、空间函数等,但不支持事务和行锁,最大缺陷是崩溃后无法安全恢复。对于只读的数据或表比较小,可以忍受修复操作的情况仍然可以使用myISAM。 myISAM将表存储在数据文件和索引文件中,分别以.myd和. 阅读全文

posted @ 2021-07-07 23:34 Eleanor123 阅读(373) 评论(0) 推荐(1)

什么是空间索引?
摘要:MyISAM表支持空间索引,可以用作地理数据存储。它和B-Tree索引不同,这类索引无需前缀查询。 空间索引会从所有维度来索引数据,查询时可以有效地使用任意维度来组合查询。 必须使用MySQL的GIS即地理信息系统的相关函数来维护数据,但MySQL对GIS的支持并不完善,因此大部分人都不会使用这个特 阅读全文

posted @ 2021-07-06 23:45 Eleanor123 阅读(409) 评论(0) 推荐(1)

哈希索引了解?
摘要:哈希索引基于哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码,哈希码是一个较小值,并且不同的键值的行计算出的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。 只有memory引擎显式支持哈希索引,这也 阅读全文

posted @ 2021-07-06 23:40 Eleanor123 阅读(147) 评论(0) 推荐(1)

innoDB
摘要:innoDB是MySQL的默认事务型引擎,用来处理大量短期事务。innoDB的性能和自动崩溃恢复特性使得它在非事务存储需求中也很流行,除非有特别原因否则应该优先考虑InnoDB。 innoDB的数据存储在表空间,表空间由一系列数据文件组成。MySQL4.1以后innoDB可以将每个表的数据和索引放在 阅读全文

posted @ 2021-07-06 23:30 Eleanor123 阅读(162) 评论(0) 推荐(1)

数据库死锁如何解决
摘要:死锁指的是多个事务在同一资源上相互占用并请求锁定对方占用的资源而导致恶性循环的现象。当多个事务试图以不同顺序锁定资源时可能就会产生死锁,多个事务同时锁定同一个资源也会产生死锁。 为了解决死锁问题,数据库系统实现了死锁检测和死锁超时机制。 越复杂的系统,例如InnoDB存储引擎,越能检测到死锁的循环依 阅读全文

posted @ 2021-07-06 23:16 Eleanor123 阅读(587) 评论(0) 推荐(1)

索引有什么用?
摘要:索引也叫键,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能很关键,尤其是当表中数据量越来越大时,索引对于性能的影响越来重要。在数据量小且负载较低时,不恰当的索引对性能的影响可能还不明显,但数据量逐渐增大时,性能会急剧下降。 索引大大减少了服务器需要扫描的数据量,可以帮助服务器避免排序和 阅读全文

posted @ 2021-07-06 00:38 Eleanor123 阅读(343) 评论(0) 推荐(1)