碎片整理: mysql数据一开始是在磁盘上顺序存放的,如果数据表有频繁的update改动,那么数据就会形成很多碎片,拖慢速度和不利于索引: 优化碎片有两种方式: alter table user engine innodb;其实user这个表原先也是innodb的,这句话看上去没有任何意义,但是mysql会重新规整数据 optimize table user; 也可以修复: 碎片优化是一种很费cpu和内存的事,最好在夜里执行: 非常规 的 min max 优化 select min(age)…
1.mySql 删除表中大批量的数据 假设有一个表(logs)有2000万条记录,我们要在业 务不停止的情况下删除其中status=1的所有记录,差不多有1800万条,直接执行 DELETE FROM logs WHERE status=1 会发现删除失败,因为lock wait timeout exceed的错误.因为这条语句所涉及的记录数太多了,因此我们可以分批来删除,比如每10000条进行删除,那么我们可以利用MySQL这样的语句来 完成 DELETE FROM logs WHERE st…
数据字段中存放的是id集,形如 1,2,15,35 也可类推json格式 查询时不用拆分了, 用上 instr.concat搜索和连接字符串 查询fids中包含15的 select * from table where instr(concat(',', fids, ','), ',15,') > 0 查询时,多个字段 like 同个值 select * from table where concat(name, title) like '%哈哈%';…
如果所传bookTypeName为空则执行select * from t_bookType(搜索框里未输入信息) 否则追加 and bookTypeName like '%"+bookType.getBookTypeName()+"%' 如果是追加的第一个and则替换为where: sb.toString().replaceFirst("and", "where") 方法代码示例如下: public ResultSet bookTypeList…
1.查询数据(保证查询性能) SELECT * 和 SELECT t.id , t.name:后者性能其实总体优于前者. 2.在查询的时候最好给表起个 别名,方便找到表中要查询的字段.执行sql的进行多条件查询的时候,使用类如Navicat 之类的工具,按照下面这种格式写查询sql: and cus.uuid='' -- and cus.customerId='' and cus.customerName='' or cus.authState='' -- or cus.createTime='…
转自:http://www.jb51.net/article/46163.htm 在开发网站的时候,出于安全考虑,需要过滤从页面传递过来的字符.通常,用户可以通过以下接口调用数据库的内容:URL地址栏.登陆界面.留言板.搜索框等.这往往给骇客留下了可乘之机.轻则数据遭到泄露,重则服务器被拿下. 一.SQL注入的步骤 a) 寻找注入点(如:登录界面.留言板等) b) 用户自己构造SQL语句(如:' or 1=1#,后面会讲解) c) 将sql语句发送给数据库管理系统(DBMS) d) DB…
MYSQL SQL语句技巧初探(一) 本文是我最近了解到的sql某些方法()组合实现一些功能的总结以后还会更新: rand与rand(n)实现提取随机行及order by原理的探讨. Bit_and,bit_or,bit_count等位操作方法实现统计功能. rand与rand(n)提取 使用order by rand(n)配合limit n可以提起相应的n个随机样本. 如:select * from student grade=’2’ order by rand() limit 5 随机提…