发布时间:2017-09-08 11:26:13

 MySQL5.6中,使用union all相当于创建一张临时表,这在执行大的联合查询时候会增加I/O开销,降低查询速度。 例如执行以下SQL语句: (select id from accessLog order by id) union all (select id from access_test order by id); 在MySQL5.6环境:点击(此处)折叠或打开.........【阅读全文】

阅读(63) | 评论(0) | 转发(0)

发布时间:2017-09-07 17:03:31

 测试一个案例,测试环境分别为MySQL5.5和MySQL5.7。 在MySQL5.5环境中:点击(此处)折叠或打开mysql> select * from access_test order by rand() desc limit 5;+---------+------------------------------------------+------------+---------------------+-----.........【阅读全文】

阅读(63) | 评论(0) | 转发(0)

发布时间:2017-09-07 15:48:19

 MySQL的子查询一直以来都是性能差的著称,解决方法是以join代替。 MySQL5.5版本中该查询先把accessLog表中版本为2.2的数据线过滤出来,然后每个符合条件的数据都与内表进行一次select id from accessLog_01,因此性能低下。MySQL5.5采取的解决方法是将in重写为exists。 在MySQL5.6/5.7版本中,子查询执.........【阅读全文】

阅读(66) | 评论(0) | 转发(0)

发布时间:2017-09-06 14:26:12

 通常,MySQL将错误日志输出在hostname.err文件中,但MySQL5.7可以将错误日志打印到操作系统日志中,具体操作如下: MySQL服务器启动的时候,mysqld_safe加 --syslog参数,如下: 启动MySQL服务:[root@mysql log]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --syslog --user=mysq.........【阅读全文】

阅读(43) | 评论(0) | 转发(0)

发布时间:2017-09-06 14:04:21

 在MySQL5.5版本中,explain查看执行计划,只能支持select语句,但是在MySQL5.6/5.7版本中,可以支持DML语句,即UPDATE、DELETE、INSERT。 建立测试表accessLog和accessLog_bak进行测试:点击(此处)折叠或打开mysql> explain select * from accessLog where id=16649850;.........【阅读全文】

阅读(44) | 评论(0) | 转发(0)

发布时间:2017-09-06 13:39:24

MySql中delimiter的作用是什么?这个命令与存储过程没什么关系吧。其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。如输入下面的语句mysql> select * from test_table;.........【阅读全文】

阅读(31) | 评论(0) | 转发(0)

发布时间:2017-09-06 12:51:28

 MySQL5.6不支持一个表有多个UPDATE/DELETE/INSERT触发器。 下边看一个例子: 创建三个测试表:点击(此处)折叠或打开mysql> create table t_trig_test_01 (name varchar(10));Query OK, 0 rows affected (0.07 sec)mysql> create .........【阅读全文】

阅读(42) | 评论(0) | 转发(0)

发布时间:2017-09-06 10:19:56

 在MySQL5.7之前的版本中,函数索引是无法用到索引的,也不支持虚拟列,下边的SQL执行时候回进行全表扫描: select * from t1 where mod(mode_id,8)=1 MySQL5.7支持虚拟列,并且可以使用函数索引。 确定数据库版本:点击(此处)折叠或打开mysql> select version();.........【阅读全文】

阅读(57) | 评论(0) | 转发(0)

发布时间:2017-09-05 17:51:09

  对于innodb存储引擎,例如删除一行,这些行只是标记为“已删除”,而不是真正从索引中物理删除了,因而空间也没有真正得到释放。Innodb的Purge线程会异步的来清理这些没有用的索引键和行,但是依然没有把这些释放出来的空间给系统用,因而会导致页面中存在很多空洞。  MySQL5.7之前的版本中,需要使用OPT.........【阅读全文】

阅读(66) | 评论(0) | 转发(0)

发布时间:2017-09-05 16:46:08

 在MySQL5.5及之前的版本中,查看死锁需要执行show engine innodb status \G; 在MySQL5.6/5.7版本中,可以在my.cnf配置文件中加入: innodb_print_all_deadlocks=1 就可以把死锁信息打印到错误日志里边。......【阅读全文】

阅读(28) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册