1.正则表达式的使用 regexp例:select name,email from t where email regexp '@163[.,]com$'使用like方式查询selct name,email from t where email like '%@163.com' or email like '%@163,com' 2.巧用rand()提取随机行select * from t3 order by rand() limit 3; 3.利用group by 的with rollup使用…
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 随机提…
一.索引与慢查询 聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中? 为了说明,创建一个表t,该表3个字段,一个主键索引,一个普通索引 CREATE TABLE `t` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `a` (`a`) ) ENGINE=InnoDB; insert into…
mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)      query_cache_size 6)…
有时候,我们希望将写好的 sql 语句,甚至是存储过程进行查询,虽然效率不高(有时候并不是效率至上). 巧用AsTable var sql = fsql.Select<UserX>() .AsTable((a, b) => "(select * from user where clicks > 10)") .Page(1, 10).ToList(); 本身 AsTable 是用来进行分表分库的,后续我们会接着讲. 友情提醒:当开启了自动同步结构功能,UserX…
慢查询日志概述 所谓慢查询日志,就是用于记录MySQL中响应时间超过设定阈值的SQL语句,通过打开慢查询开关,MySQL会将大于阈值的SQL记录在日志中,以便于分析性能. 慢查询日志选项默认是关闭的,如果要开启,则需要手动设置. 慢查询日志选项不建议一直开启,因为记录日志意味着IO操作,本身对性能有一定的影响,因此,建议在生产环境关闭该选项:而在开发环境调优阶段可以适当打开该选项. 检查是否开启了慢查询日志: mysql> show variables like '%slow_query_log…
IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登录,对方技术人员一头雾水不知道什么原因,后台日志没有任何错误信息.我临危受命,赶往该项目进行扑火工作,其实本来2天都可以解决的问题,让我花了5天解决.具体原因待我一一解释. 1,未掌握log日志的精髓 log日志的debug,info,error信息乱打,该用debug的用info,该用info的用…
一.常见sql技巧 1.正则表达式的使用 2.巧用RAND()提取随机行 mysql数据库中有一个随机函数rand()是获取一个0-1之间的数,利用这个函数和order by一起能够吧数据随机排序, . mysql>select * from stu order by rand(); 下面是通过limit随机抽取了3条数据样本. mysql>select * from stu order by rand() limit 3; 3.利用GROUP BY 的WITH ROLLUP子句统计 使用gr…
  以下并非本人整理,但是看后感觉相当不错,特此分享. 1.应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分开的操作尽量分开处理,提高每次的响应速度:在数据窗口使用SQL时,尽量把使用的索引放在选择的首列:算法的结构尽量简单:在查询时,不要过多地使用通配符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECT COL1,COL2 FROMT1:在可能的情况下尽量限制尽量结果集行数如:…
有些人还不知道sql语句的基本性能优化方法,在此我简单提醒一下,最基本的优化方法:   1.检查是否缺少索引.调试的时候开启“包括实际的执行计划”   执行后会显示缺少的索引,   然后让dba帮助添加适当的索引,以提高sql执行性能.   2.监控io读写情况和cpu耗时情况,调试的时候通过 set STATISTICS io on ; set STATISTICS time on ;  来开启监控,然后调整sql逻辑来对比优化情况,以选择最优的sql逻辑,比如: set STATISTICS…