xml地图|网站地图|网站标签 [设为首页] [加入收藏]
数据库迁移到
分类:数据库

下面我们就来说说如何从 SQLite 迁移到 MySQL 。

引言

mysql的分页比较简单,只需要limit offset,length就可以获取数据了,但是当offset和length比较大的时候,mysql明显性能下降

首先你要已经安装好 MySQL 数据库。如果你用的是 Ubuntu 系统,请参考这篇文章。其他系统请参考各自对应的文档。

这不是一个什么多深的技术问题,多么牛叉的编程能力。这跟一个人的开发能力也没有非常必然的直接关系,但是知道这些会对你的SQL编写,排忧及优化上会有很大的帮助。它不是一个复杂的知识点,但是一个非常基础的SQL根基。不了解这些,你一直用普通水泥盖房子;掌握这些,你是在用高等水泥盖房子。

1.子查询优化法

进入 页面:

然而,就是这么一个小小的知识点,大家可以去调查一下周围的同事朋友,没准你会得到一个“惊喜”。

先找出第一条数据,然后大于等于这条数据的id就是要获取的数据 缺点:数据必须是连续的,可以说不能有where条件,where条件会筛选数据,导致数据失去连续性,具体方法请看下面的查询实例:复制代码 代码如下:mysql> set profiling=1;Query OK, 0 rows affected

点击蓝色的 EXPORT 按钮将当前数据库中的所有数据导出并下载到本地,默认文件名是 GhostData.json 。

由于这篇文章是突然有感而写,下面随手编写的SQL语句没有经过测试。

mysql> select count from Member;+----------+| count |+----------+| 169566 | +----------+1 row in set

编辑 config.js 文件,在 production 配置段将数据库配置修改为 MySQL:

看下面的几段SQL语句:复制代码 代码如下:#1SELECT ID,COUNT AS TOTALFROM STUDENTGROUP BY IDHAVING TOTAL>2#2SELECT ID,COUNT AS TOTALFROM STUDENTGROUP BY IDORDER BY TOTAL#3SELECT FIRSTNAME+' '+LASTNAME AS NAME, COUNT AS COUNTFROM STUDENTGROUP BY NAME你觉得哪一个不能够成功执行?

mysql> pager grep !~-PAGER set to 'grep !~-'

javascript database: { client: 'mysql', connection: { host: 'localhost', //数据库所在服务器 user: '数据库登录名', password: '数据库登录密码', database: '数据库名称', charset: 'utf8' }, debug: false },

下面是SELECT语句的逻辑执行顺序:

mysql> select * from Member limit 10, 100;100 rows in set

上述个字段填写好之后,重新启动 Ghost。

1.FROM2.ON3.JOIN4.WHERE5.GROUP BY6.WITH CUBE or WITH ROLLUP7.HAVING8.SELECT9.DISTINCT10.ORDER BY11.TOP MICROSOFT指出,SELECT语句的实际物理执行顺序可能会由于查询处理器的不同而与这个顺序有所出入。

mysql> select * from Member where MemberID >= (select MemberID from Member limit 10,1) limit 100;100 rows in set

由于更换了数据库,新的 MySQL 数据库中没有任何内容,也没有任何登陆账号,这时需要我们新建一个临时账号,然后再次登陆进 页面将之前导出的数据重新导入。

几个示例

mysql> select * from Member limit 1000, 100;100 rows in set

再次重新打开你的网站页面,是否原来的数据都回来了!

示例一:复制代码 代码如下:SELECT ID,COUNT AS TOTALFROM STUDENTGROUP BY IDHAVING TOTAL>2

mysql> select * from Member where MemberID >= (select MemberID from Member limit 1000,1) limit 100;100 rows in set

觉得这个SQL语句眼熟吗?对,非常基础的分组查询。但它不能执行成功,因为HAVING的执行顺序在SELECT之上。

mysql> select * from Member limit 100000, 100;100 rows in set

1.FROM STUDENT2.GROUP BY ID3.HAVING TOTAL>24.SELECT ID,COUNT AS TOTAL 很明显,TOTAL是在最后一句SELECT ID,COUNT AS TOTAL执行过后生成的新别名。因此,在HAVING TOTAL>2执行时是不能识别TOTAL的。

mysql> select * from Member where MemberID >= (select MemberID from Member limit 100000,1) limit 100;100 rows in set

示例二复制代码 代码如下:SELECT ID,COUNT AS TOTALFROM STUDENTGROUP BY IDORDER BY TOTAL

mysql> nopagerPAGER set to stdout

这个的实际执行顺序是:

mysql> show profilesG*************************** 1. row ***************************Query_ID: 1Duration: 0.00003300 Query: select count from Member

本文由澳门新葡亰手机版发布于数据库,转载请注明出处:数据库迁移到

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文