如下所示:

from 表

where 条件

group by 字段

形成虚拟的表及字段,聚合及字段添加

having 筛选数据

distinct 去重

order by 字段 asc,desc

limit 限制条数

select 罗列记录

先根据where 约束条件 将数据从表中加载到内存,所以where的条件作用在数据之前,然后根据字段进行分组,在内存中形成一张虚拟的表包含字段,

如果此时有聚合函数则先执行聚合函数,并将聚合函数字段也加到虚拟的表中,接着进行having记录筛选,筛选完成后对数据进行去重,排序,限制等操作后进行显示。

补充知识:mysql where条件and的执行顺序从左到右

之前做功能,把三个条件通过md5加密之后得到一个字符串的字段unique_key,把这个字段设置为唯一索引,希望查询的时候通过这个唯一索引来查询,不用分三个条件分别进行查询了,同时使用了replace方法保证相同的三个条件下更新数据的话数据库只会有一条记录。

后来发现列表查询必须要开放这三个条件,于是只好将这个unique_key放到where条件and 的最左边,通过unique_key筛选出来效率也不会差。

mysql的优化方方面面,写的时候要多考虑了。

更多相关文章

  1. python list.sort()根据多个关键字排序的方法实现
  2. 开机引导程序只执行一次的方法
  3. Android中对后台任务线程性能的说明及优化
  4. android 报错Attempt to invoke virtual method
  5. android实现关键字搜索功能
  6. 【Android】Android常见的错误及解决
  7. android 项目打包成Library
  8. Android(安卓)进程回收之LowMemoryKiller原理篇
  9. Android的IPC机制(六)—— BroadcastReceiver的使用

随机推荐

  1. (转)为什么Android不是GPL许可证?
  2. android 抽屉式滑动demo
  3. android button多状态, selector
  4. 修改ScrollView滚动条样式
  5. Android Studio Toast/Notification中文
  6. Android Overview
  7. Android的Adapter与BaseAdapter的介绍
  8. Android 控件属性
  9. Android练习——Spinner二级联动_城市选
  10. Android屏幕尺寸、标题栏高度、状态栏高