mysql 优化rand_mysql优化--巧用rand(),with rollup,help__update2014.1.13
巧用rand()提取随机行:
mysql中rand()获取0-1之间的一个随机数.这个函数和order by能把数据随机排序。
随机从表中取出十条数据:
select * from tablename order by rand() limit 10;
此方法确实很方便,但是效率上却慢的惊人,切勿使用。
SELECT * FROM `table`WHERE id>= ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) * RAND() + (SELECT MIN(id) FROM `table`) LIMIT 10
这条语句看上去有点复杂,但实际的运行效率想到的高,而且能保证10条记录都是随机。测试了下,用时0.048s,相当给力。
利用GROUP BY的WITH ROLLUP
使用group by的with rollup子句可以检索出更多的分组聚合信息。
mysql> select * from demo;+-------+-------+| cname | pname|+-------+-------+| bj | hd || bj | hd || bj | xc || bj | xc || bj | hd || sh | dh || sh | dh || sh | rg || sh | dh |+-------+-------+9 rows in set (0.00 sec)
对demo表按照cname、pname列分组对pname列进行聚合计算如下
mysql> select cname,pname,count(pname) from demo groupby cname,pname;
+-------+-------+--------------+
| cname | pname | count(pname) |
+-------+-------+--------------+
| bj | hd | 3 |
| bj | xc | 2 |
| sh | dh | 3 |
| sh | rg | 1 |
+-------+-------+--------------+
4 rows in set (0.00 sec)
同样使用with rollup关键字后,统计出更多的信息,如下。
注意: with rollup不可以和ordery by同时使用
mysql> select cname,pname,count(pname) from demo groupby cname,pname with rollup;
+-------+-------+--------------+
| cname | pname | count(pname) |
+-------+-------+--------------+
| bj | hd | 3 |
| bj | xc | 2 |
| bj | NULL | 5 |
| sh | dh | 3 |
| sh | rg | 1 |
| sh | NULL | 4 |
| NULL | NULL | 9 |
+-------+-------+--------------+
7 rows in set (0.00 sec)
mysql help使用:? % \G
1.mysql使用时如果记不住命令可用?获得帮助。通常是 ? create / ? alter 这样使用
2.当太长的命令记不住可以 ? reg%获得了regexp的使用方法。? opti%获得了optimize的使用方法。
3.\G 会格式化输出sql结果。使用\G不用加;。
mysql 优化rand_mysql优化--巧用rand(),with rollup,help__update2014.1.13相关推荐
- mysql数据库管理维护_深入浅出MySQL 数据库开发 优化与管理维护 第3版
资料目录: 第 一部分 基础篇 第 1章 MySQL的安装与配置 2 1.1 MySQL的下载 2 1.1.1 在Windows平台下下载MySQL 3 1.1.2 在Linux平台下下载MySQL ...
- mysql sql优化_浅谈mysql中sql优化
说到sql优化,一般有几个步骤呢,在网上看到了一篇很不错的帖子.在这分享一下吧,也是自己学习的一个过程. 一.查找慢查询 1.1.查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; ...
- Mysql 架构及优化之-索引优化
索引基础知识 索引帮助mysql高效获取数据的数据结构 索引(mysql中叫"键(key)") 数据越大越重要 索引好比一本书,为了找到书中特定的话题,查看目录,获得页码 sele ...
- MySQL 调优/优化的 101 个建议!
转载自 MySQL 调优/优化的 101 个建议! MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适 ...
- 庖丁解牛|图解 MySQL 8.0 优化器查询转换篇
简介: 本篇介绍子查询.分析表和JOIN的复杂转换过程 一 背景和架构 在<庖丁解牛-图解MySQL 8.0优化器查询解析篇>一文中我们重点介绍了MySQL最新版本8.0.25关于SQL ...
- mysql入门优化_MySQL数据库:MySQL十大优化技巧详解
本文主要向大家介绍了MySQL数据库的MySQL十大优化技巧详解,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是 ...
- Mysql之索引优化案例
Mysql之索引优化案例 1.单表简单案例 1.1创建表 1.2 问题: 1.3 解决:新建索引 1.4 再次执行 2.双表简单案例 2.1创建表并插入数据 2.2 由于是LEFT JOIN,所以左表 ...
- MySQL高级-MySQL查询缓存优化
MySQL查询缓存优化 1 概述 2 操作流程 3 查询缓存配置 4 开启查询缓存 5 查询缓存SELECT选项 6 查询缓存失效的情况 1 概述 开启Mysql的查询缓存,当执行完全相同的SQL语句 ...
- 101个MySQL调试和优化技巧
101个MySQL调试和优化技巧 MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化 MySQL安装的技巧.一些 ...
最新文章
- BZOJ4568: [Scoi2016]幸运数字(线性基 倍增)
- ATO/MTO类机械制造业特点以及ERP需求分析(三)
- python创建一个类似于国家象棋棋盘的0-1矩阵_NumPy练习题(全中文并附详细讲解)...
- boost::ratio_not_equal相关的测试程序
- 红队中易被攻击的一些重点系统漏洞整理
- Scala match
- lstm 做多分类loss完全不下降_使用Induction Network做Few-Shot Text分类
- ImageRanger 全萤幕检视操作说明
- python折线图实线虚线_python – matplotlib中的虚线而不是缺失值
- 利用OA系统更便捷地查询员工工资
- 国外优秀的屏幕录象专家
- 200行代码让你找回童年的记忆,C + EasyX实现《拼图》小游戏!
- qq 客服 php,QQ支持临时会话设置
- C# Socket实现两台电脑通信(三)
- u盘中毒文件为html文档,u盘中毒文件被隐藏了?教你如何快速恢复隐藏文件
- JS 【详解】作用域
- libssl-dev : 依赖: libssl1.0.0 (= 1.0.2g-1ubuntu4.13) 但是 1.0.2n-1ubuntu5.1 正要被安装
- python获取文件夹名称、文件名、去除后缀的文件名、文件改名等
- python自动识别简单图片中的文字
- 什么是整洁代码?大咖程序员们这样说
热门文章
- java反编译工具_Java开发必会的反编译知识(附支持对Lambda进行反编译的工具)...
- 【OpenCV 例程200篇】01. 图像的读取(cv2.imread)
- win10-PC端无法输入中文
- 【Python】提升Python程序性能的好习惯
- 【Python】对象、类、元类
- C#如何Json转字符串;字符串转Json;Newtonsoft.Json(Json.Net)
- 【转载】linux环境下tcpdump源代码分析
- Mysql经常使用命令
- $arr['id'],$arr[id]的区别
- mac os 显示文件列表命令 ls -a