select

mysql HAVING用法

这一生的挚爱 提交于 2020-03-24 14:42:53
原文链接:https://www.cnblogs.com/mr-wuxiansheng/p/11188733.html having字句可以让我们筛选分组之后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。 而having子句在聚合后对组记录进行筛选。我的理解就是真实表中没有此数据,这些数据是通过一些函数产生的。 一、显示每个地区的总人口数和总面积. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region 先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中 的不同字段(一或多条记录)作运算。 二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。 SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region HAVING SUM(area)>1000000 在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。 相反,having子句可以让我们筛选分组后的各组数据 三、 having单独使用,与where类似 eg: 查询单笔订单充值金额大于1000的 SELECT

mysql查询优化笔记

与世无争的帅哥 提交于 2020-03-24 14:20:08
1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:   select id from t where num is null   可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:   select id from t where num=0 3、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 4、应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:   select id from t where num=10 or num=20   可以这样查询:   select id from t where num=10   union all   select id from t where num=20 5、in 和 not in 也要慎用,否则会导致全表扫描,如:   select id from t where num in(1,2,3)   对于连续的数值,能用 between 就不要用 in 了:   select id from t where num between 1 and 3 6

Oracle数据库的性能调整

僤鯓⒐⒋嵵緔 提交于 2020-03-24 14:18:05
oracle是一个高性能数据库软件。用户可以通过参数的调整,达到性能的优化。性能优化主要分为两部分:一是数据库管理员通过对系统参数的调整达到优化的目的,二是开发人员通过对应用程序的优化达到调整的目的。   在此,仅就系统参数的调整进行探讨,而不涉及应用程序的优化。对系统参数的调整,可以分为以下几个部分:   (1)调整内存分配   系统全局区(SGA)是一个分配给ORACLE 包含ORACLE 数据库实例控制信息的内存段。SGA的大小对系统性能的影响极大,其缺省参数设置只适用于配置很低的计算机,不适应收入系统现有设备的需要。这些参数若不作调整,会对系统资源造成巨大浪费。就收入系统的Alpha 1200而言,SGA的大小以160兆左右为宜。   初始化参数文件中的一些参数对SGA的大小有决定性的影响。参数DB-BLOCK-BUFFERS(SGA中存储区高速缓存的缓冲区数目),参数SHARED-POOL-SIZE(分配给共享SQL区的字节数),是SGA大小的主要影响者。   DB-BLOCK-BUFFERS参数是SGA大小和数据库性能的最重要的决定因素。该值较高,可以提高系统的命中率,减少I/O。每个缓冲区的大小等于参数DB-BLOCK-SIZE的大小。ORACLE数据库块以字节表示大小。   Oracle SGA区共享池部分由库高速缓存、字典高速缓存及其他一些用户和服务器会话信息组成

MySQL时间相关操作

為{幸葍}努か 提交于 2020-03-24 14:06:58
本文主要介绍MySQL使用过程中有关时间处理的相关操作: MySQL时间更新(加上或减去一段时间) MySQL毫秒数和日期之间的转换 一、MySQL时间更新(加上或减去一段时间) 1.1 MySQL时间加减函数 DATE_ADD() 函数向日期添加指定的时间间隔; DATE_SUB() 函数向日期减少指定的时间间隔。 1.2 使用实例 (1) 以当前时间为基准,为日期增加一个时间间隔 select date_add(now(), interval 1 day); //加1天 select date_add(now(), interval 1 hour); //加1小时 select date_add(now(), interval 1 minute); //加1分钟 select date_add(now(), interval 1 second); //加1秒 select date_add(now(), interval 1 microsecond); //加1毫秒 select date_add(now(), interval 1 week);   //加1周 select date_add(now(), interval 1 month);   //加1月 select date_add(now(), interval 1 quarter); //加1季 select

Linux网络IO模型

别来无恙 提交于 2020-03-24 13:53:25
同步和异步,阻塞和非阻塞 同步和异步 关注的是结果消息的通信机制 同步 : 同步的意思就是调用方需要主动等待结果的返回 异步 : 异步的意思就是不需要主动等待结果的返回,而是通过其他手段比如,状态通知,回调函数等。 阻塞和非阻塞 主要关注的是等待结果返回调用方的状态 阻塞 : 是指结果返回之前,当前线程被挂起,不做任何事 非阻塞 : 是指结果在返回之前,线程可以做一些其他事,不会被挂起。 两者的组合 1. 同步阻塞 : 同步阻塞基本也是编程中最常见的模型,打个比方你去商店买衣服,你去了之后发现衣服卖完了,那你就在店里面一直等,期间不做任何事 ( 包括看手机 ) ,等着商家进货,直到有货为止,这个效率很低。 2. 同步非阻塞 : 同步非阻塞在编程中可以抽象为一个轮询模式,你去了商店之后,发现衣服卖完了,这个时候不需要傻傻的等着,你可以去其他地方比如奶茶店,买杯水,但是你还是需要时不时的去商店问老板新衣服到了吗。 3. 异步阻塞 : 异步阻塞这个编程里面用的较少,有点类似你写了个线程池 ,submit 然后马上 future.get () ,这样线程其实还是挂起的。有点像你去商店买衣服,这个时候发现衣服没有了,这个时候你就给老板留给电话,说衣服到了就给我打电话,然后你就守着这个电话,一直等着他响什么事也不做。这样感觉的确有点傻,所以这个模式用得比较少。 4. 异步非阻塞 : 异步非阻塞

MYSQL字段值去重

喜夏-厌秋 提交于 2020-03-24 13:31:35
1.根据名称分组去重,并查询记录ID select max(id) from T_TABLE GROUP BY name 2.根据ID获取记录 select * from T_TABLE where ID in ( select max(id) from T_TABLE GROUP BY name ) 来源: https://www.cnblogs.com/Bud-blog/p/11882925.html

select poll和epoll

孤街醉人 提交于 2020-03-24 11:32:37
select poll epoll都是IO多路复用机制。这里的复用其实可以理解为复用的线程,即一个(或者较少的)线程完成多个IO的读写。这里总结下这三个函数的区别。 1 select 1.1 select原理分析 1 select的函数原型是 int select(int nfds, fd_set *restrict readfds, fd_set *restrict writefds, fd_set *restrict errorfds, struct timeval *restrict timeout); 使用的时候需要将fd_set从用户空间copy到内核空间。select的使用方式类似如下 while true { select(streams[]) for i in streams[] { //需要遍历所有的fd_set if i has data // 判断是否有数据 read until unavailable } } 2 select的核心是do_select()。do_select首先会注册回调函数__pollwait,__pollwait会在被调用的时候将当前进程添加到设备的等待队列里。 do_select会在一个for循环里调用设备的f_op->poll。而该函数有两个作用,一个是调用poll_wait()函数,一个是检测设备当前状态。而poll

IO多路复用之select poll epoll

夙愿已清 提交于 2020-03-24 11:31:37
参考文档: http://blog.csdn.net/tennysonsky/article/details/45745887 select(),poll(),epoll()都是I/O多路复用的机制。I/O多路复用通过一种机制, 可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪,就是这个文件描述符进行读写操作之前),能够通知程序进行相应的读写操作 。 但select(),poll(),epoll()本质上都是同步I/O ,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。 与多线程和多进程相比,I/O 多路复用的最大优势是系统开销小,系统不需要建立新的进程或者线程,也不必维护这些线程和进程。 select 监视并等待多个文件描述符的属性变化(可读、可写或错误异常) select()函数监视的文件描述符分 3 类,分别是writefds、readfds、和 exceptfds 调用后 select() 函数会阻塞,直到有描述符就绪(有数据可读、可写、或者有错误异常),或者超时( timeout 指定等待时间),函数才返回 当 select()函数返回后,可以通过遍历 fdset,来找到就绪的描述符 int select(int nfds, fd_set

I/O 多路复用之select、poll、epoll详解

风流意气都作罢 提交于 2020-03-24 11:13:34
  select,poll,epoll都是IO多路复用的机制。I/O多路复用就是 通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。 1.select   select 函数监视的文件描述符分3类,分别是writefds、readfds、和exceptfds。调用后select函数会阻塞,直到有描述副就绪(有数据 可读、可写、或者有except),或者超时(timeout指定等待时间,如果立即返回设为null即可),函数返回。当select函数返回后,可以 通过遍历fdset,来找到就绪的描述符。    select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点 。select的一 个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024,可以通过修改宏定义甚至重新编译内核的方式提升这一限制,但是这样也会造成效率的降低。   select有3个缺点:     每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大。  

团队项目总结

你。 提交于 2020-03-24 10:55:50
开发内容: 首先我们选择使用Python脚本语言开发这个项目 代码:1.使用python的request库先获取网页内容下来(目标网址首页 url: https://movie.douban.com/top250) 2.解析html文件,提取出我们要提取的信息 import os import requests from bs4 import BeautifulSoup from requests.exceptions import RequestException """ Author: Damon 功能: 爬取豆瓣网Top250电影信息保存到本地 """ # 目标网址 URL = "https://movie.douban.com/top250?start={}" # 按照爬取顺序保存每个电影的网址 entity_url = [] def save_data(result): """ 保存爬取信息到本地 :return: None """ f = open('movice.txt', "a", encoding="utf8") f.write("========================================================================================================\n") f.write(