利用一条SQL语句从数据库Table表中随机获取N条记录,各数据库的SQL语句略有不同,如下:
1、MySql
Select * From TABLE Order By Rand() Limit N
以上代码效率不高,自己对1000条数据表随机取10条的测试结果为耗时0.125s,有网友推荐改为以下代码效率有大幅提高,耗时为0.005s,不过结果是随机从某个位置开始取N条记录,而不是随机取N条记录,略有差异。详细说明见mysql使用rand随机查询记录效率测试。
SELECT * FROM `TABLE` a join (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `TABLE`)-(SELECT MIN(id) FROM `TABLE`))+(SELECT MIN(id) FROM `TABLE`)) AS id) AS b WHERE a.id >= b.id ORDER BY a.id LIMIT N;
2、SQL Server
Select TOP N * From TABLE Order By NewID()
阅读全文…
今儿个安装在线客服应用Mibew Messenger来玩,安装过程中断,提示了
Query failed: Unknown table engine ‘InnoDb’
提示信息明显,缺少InnoDb数据库引擎。
命令行下查看一下可用数据库引擎:
阅读全文…
PHP 4.4.1+MySQL 5.1的环境下出现了如下的提示:
File ‘c:\mysql\share\charsets\?.conf’ not found (Errcode: 22) Character set ‘#33′ is not a compiled character set and is not specified in the ‘c:\mysql\share\charsets\Index’ file
查阅一番后基本可以确定原因为低版本的PHP和高版本的MySQL之间的兼容性导致的。
最简单的办法是升级PHP到PHP5.3版本即可搞定,未知测试。因服务器不是我配的,不敢乱动,怕搞出麻烦,于是保留低版本的PHP,另寻其他方法。
以下试验了多种网络上查到的解决方法,供大家参考:
阅读全文…
数据库自动备份是常见任务,为了数据的安全性和可恢复性,这个也是必须的。数据是网站之本,一旦出现意外情况,自然需要还原。
前面曾介绍过一款叫 MySQLDumper 的工具,但MySQLDumper无法实现自动备份,于是考虑了用Windows的计划任务+批处理来实现MySQL数据库的自动备份。
阅读全文…
MySQLDumper是一个备份和恢复MySQL数据库的PHP管理脚本,使用上简单便捷。主要用于使用免费空间及共享主机等不能直接操作服务器的用户管理MySQL数据库。如果你能直接操作服务器,那么使用mysqldump命令效率会更高且更方便。
阅读全文…
症状:
使用命令行对MySQL数据库进行还原时出现错误提示:
ERROR 2006 (HY000) at line 22: MySQL server has gone away
分析:
可能是因为其中一些insert语句的大小超出了MySQL目前设置的缓冲区大小。
阅读全文…