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
使用group by 的with rollup子句可以检索出更多的分组聚合信息
注:with rollup 不可以和 order by 同时使用
select cname,pname,count(pname) from demo group by cname,pname with rollup;

4.用bit group functions 做统计
在使用group by 语句时可以同时使用bit_and,bit_or 函数来完成统计工作.这两个函数的作用主要是做数值之间的逻辑运算.
select id,bit_or(kind) from order_rab group by id
对order_rab表中的id分组时对kind做位与和或计算
select id,bit_and(kind) from order_rab group by id

-------------------------------------------------------
优化SQL语句的一般步骤

1.通过show status命令了解各种sql的执行频率
show [session|global] status;
其中: session(默认)表示当前连接
global 表示自数据库启动至今
show status;
show global status;
show status like 'Com_%';
show global status like 'Com_%';

参数说明:
com_select 执行select操作的次数,一次查询只累计加1
com_update 执行update操作的次数
com_insert 执行insert操作的次数,对批量插入只算一次
com_delete 执行delete操作的次数

针对Innodb存储引擎的
innodb_row_read 执行select操作的次数
innodb_row_updated 执行update操作的次数
innodb_row_inserted 执行insert操作的次数
innodb_row_deleted 执行delete操作的次数

其它:
connections 连接mysql的数量
uptime 服务器已经工作的秒数
slow_queries 慢查询的次数
mysql>show variables like '%long%'; 看到long_query_time的值就是默认慢查询记录的时间(秒)

2.定位执行效率较低的SQL语句 explain 或 desc
explain select * from table; 或
desc select * from table;
字段说明:
select_type:SIMPLE表示select类型,
type:range 表示表的连接类型,性能有好到差
system(表仅一行)
const()只一行匹配)
eq_ref 对于前面的每一行使用主键和唯一
...

3.使用like的查询,后面如果是常量并且只有%号不在第一个字符,索引才可能会被使用
explain select * from table where name like '%3'; 索引不会被使用
explain select * from table where name like '3%'; 使用

4.or 的前台条件字段都要加索引字段才会生效,否则整体不生效

5.查看索引使用情况

show status like 'Handler_read%';
Handler_read_key 这个值代表了一个行被索引值读的次数,
Handler_read_rnd_next 值高,则意叶着查询运行的低效.并且应该建立索引补救

6.慢查询日志
log_slow_queries=slow.log # 慢查询日志的路径
long_query_time=5 # 记录的时间
重启mysql服务

7.socket问题
有时候登陆mysql提示不能用socket登陆,此时可以换成tcp方式去登陆,但是必须要在php去用之前把这事情解决好
mysql -uroot -proot --protocol tcp -hlocalhost

8.root密码丢失破解
1.停止服务 pkill mysqld
#跳过授权表mysql.user和mysql.db这些表
2.mysqld_safe --skip-grant-tables --user=mysql &

3.mysql -uroot 回车

4.update user set password=password('root') where user='root' and host='localhost';
5.pkill mysqld
6.重启mysql服务
mysqld_safe --user=mysql &

SQL语句技巧_索引的优化_慢查询日志开启_root密码的破解的更多相关文章

  1. MYSQL SQL语句技巧初探(一)

    MYSQL SQL语句技巧初探(一) 本文是我最近了解到的sql某些方法()组合实现一些功能的总结以后还会更新: rand与rand(n)实现提取随机行及order by原理的探讨. Bit_and, ...

  2. 为什么 SQL 语句使用了索引,但却还是慢查询?

    一.索引与慢查询 聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中? 为了说明,创建一个表t,该表3个字段,一个主键索引,一个普通索引 CREATE ...

  3. mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)

    mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 ...

  4. FreeSql (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询

    有时候,我们希望将写好的 sql 语句,甚至是存储过程进行查询,虽然效率不高(有时候并不是效率至上). 巧用AsTable var sql = fsql.Select<UserX>() . ...

  5. MySQL优化之慢查询日志

    慢查询日志概述 所谓慢查询日志,就是用于记录MySQL中响应时间超过设定阈值的SQL语句,通过打开慢查询开关,MySQL会将大于阈值的SQL记录在日志中,以便于分析性能. 慢查询日志选项默认是关闭的, ...

  6. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  7. Mysql sql语句技巧与优化

    一.常见sql技巧 1.正则表达式的使用 2.巧用RAND()提取随机行 mysql数据库中有一个随机函数rand()是获取一个0-1之间的数,利用这个函数和order by一起能够吧数据随机排序, ...

  8. SQL语句技巧(上个样式太差了)

      以下并非本人整理,但是看后感觉相当不错,特此分享. 1.应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分 ...

  9. SQL语句最基本的性能优化方法

    有些人还不知道sql语句的基本性能优化方法,在此我简单提醒一下,最基本的优化方法:   1.检查是否缺少索引.调试的时候开启“包括实际的执行计划”   执行后会显示缺少的索引,   然后让dba帮助添 ...

随机推荐

  1. HS光流算法详解<转载>

    HS 光流法详解 前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像 ...

  2. DataTransfer(setData()方法)

    DataTransfer对象专门用来存储拖放时要携带的数据,它可以被设置为拖放事件对象的DataTransfer属性.---把拖动的数据存入其中setData有两个参数:1.第一个参数为携带数据的数据 ...

  3. Vue.js相关知识4-路由

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. WebStorm 使用

    Sublime 很强大,但是在项目越来越大而复杂的时候,会显得力不从心.比如函数追踪功能的确实,找个创建函数的地方很麻烦 这时候就该 WebStorm 出场了 0.无法输入中文句号.顿号等是 JDK ...

  5. Windows Git+TortoiseGit简易使用教程

    转载自 http://blog.csdn.net/jarelzhou/article/details/8256139 官方教程:http://tortoisegit.org/docs/tortoise ...

  6. Android 开发 之 Fragment 详解

    本文转载于 : http://blog.csdn.net/shulianghan/article/details/38064191 本博客代码地址 : -- 单一 Fragment 示例 : http ...

  7. Android-Universal-Image-Loader开源项目的简要说明及使用实例

    本文转载于:http://www.cnblogs.com/hsx514/p/3460179.html 一.核心类的说明及相关参数的说明 ImageLoaderConfiguration 1.作用:为I ...

  8. python3安装Fabric模块

    streamparse 项目的issuehttps://github.com/Parsely/streamparse/issues/172 fabric的一个支持Python3.4的forkhttps ...

  9. pyCharm使用

    1.修改文件和代码模板 修改文件头 2.显示行号

  10. (转) SLAM系统的研究点介绍 与 Kinect视觉SLAM技术介绍

          首页 视界智尚 算法技术 每日技术 来打我呀 注册     SLAM系统的研究点介绍 本文主要谈谈SLAM中的各个研究点,为研究生们(应该是博客的多数读者吧)作一个提纲挈领的摘要.然后,我 ...