关于mysql数据库对象的优化随笔
本文章只是作者自己感悟,须有不恰当之处,还望劳累指出
本章主要说的是运用一些语句和方法让数据库的结构更加优化,查询数据更加快。
EXPLAIN SELECT * FROM wx
EXPLAIN根据词义就可知道,“解释”,解释sql语句的执行,放置在sql语句前后可以查看到这条sql语句的执行属性,我们会得到一些很有意思的值,比如说key,指示查询时使用的是哪个索引。rows这条指的就是查询的时候查询了多少条数据。
另外条语句
PROCEDURE ANALYSE()
查看当前表的一些信息,根据词义‘过程分析’(个人认为很多的一些方法都是英文直接命名的,记忆的时候可以查看下他的含义,更好的理解这个方法 的作用)。像词义一样分析,我们使用
select * from table_name procedure analyse();
PROCEDURE ANALYSE()分析整张表的所有列,这里看来作用主要是修改列的长度,根据给出的统计值来优化列
此外还有些知识来完善表
这里的几乎上都是些修改表,及在公司中数据库已经建好,在日后的使用中有不恰当的地方来进行修改。
当我们数据表太大时会带来查询速度的变慢,这时候需要优化我们的数据表,我们除了可以使用索引来优化外还可以使用拆分表
就好像我们去吃一大块肉会不好吃进去,如果切成若干小块就好吃多了,所以当我们的数据表太大影响查询时,我们改使用拆分了
拆分有两种方式,
一种是水平拆分,拆分数据,把一列或多列的数据放到另外的不关联的表中,这样降低查询数量,提高查询速度,这里使用于数据本身独立性较高的数据,
另一种方式是垂直拆分(好吧,就像数据中一样是行和列组成的,那有了行的拆分,自然就还有列的拆分)行是数据,列则是数据库的列,所以这种拆分方式是把主码和一部分列放在另一个表,对于一些不常用的列来说就可以使用这种方法
还有一种方式是逆范式,违反第三范式的要求,这里无非是个度,需要自己根据自己情况来把握,太按照范式的话表之间的连接就会增加,一些简单的操作也会使用那么多的资源,影响使用。 这里就需要我们自己把握这个度,在什么地方使用第三范式