当前位置: 首页 > news >正文

MySQL索引用法实例分析

建议看原文:https://www.jb51.net/article/88846.htm
这篇文章主要介绍了MySQL索引用法,结合实例形式较为详细的分析了mysql索引的功能、定义、使用方法与相关注意事项,需要的朋友可以参考下
本文实例分析了MySQL索引用法。分享给大家供大家参考,具体如下:

MYSQL描述:

一个文章库,里面有两个表:category和article。category里面有10条分类数据。article里面有20万条。article里面有一个"article_category"字段是与category里的"category_id"字段相对应的。article表里面已经把 article_category字义为了索引。数据库大小为1.3G。

问题描述:

执行一个很普通的查询:
复制代码代码如下:
SELECT * FROM article WHERE article_category=11 ORDER BY article_id DESC LIMIT 5
执行时间大约要5秒左右
解决方案:

建一个索引:

复制代码代码如下:
create index idx_u on article (article_category,article_id);

复制代码代码如下:
SELECT * FROM article WHERE article_category=11 ORDER BY article_id DESC LIMIT 5
减少到0.0027秒
继续问题:

复制代码代码如下:
SELECT * FROM article WHERE article_category IN (2,3) ORDER BY article_id DESC LIMIT 5
执行时间要11.2850秒。
使用OR:

select * from article
where article_category=2
or article_category=3
order by article_id desc
limit 5
执行时间:11.0777

解决方案:避免使用in 或者 or (or会导致扫表),使用union all

使用UNION ALL:

(select * from article where article_category=2 order by article_id desc limit 5)
UNION ALL (select * from article where article_category=3 order by article_id desc limit 5)
ORDER BY article_id desc
limit 5
执行时间:0.0261

注:UNION 和UNION ALL 的区别

在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。

UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。

实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:

1
select * from gc_dfys union select * from ls_jg_dfys
这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。

而UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL,如下:

1
select * from gc_dfys union all select * from ls_jg_dfys
注:mysql中union all的order by问题

今天写mysql数据库代码的时候,发现union的结果不是预期的

$stime = date(“H:i:s”);
sql1="select∗fromTwhere′sql1 = "select * from T where 'sql1="selectfromTwherestime’>stime order by stime desc";
sql2="select∗fromTwherestime>′sql2 = "select * from T where stime>'sql2="selectfromTwherestime>stime’ order by stime asc";
sql="(sql = "(sql="(sql) union all (sql2)";分别执行sql2)"; 分别执行sql2)";sql1 和 $sql2 的时候结果是对的

但是执行sql的时候,发现结果反了,sql的时候,发现结果反了,sqlsql1的部分变升序,$sql2的部分变成降序

搜索也没有得到满意的答案,好像有些数据库还是不支持字句order by 的

无意中发现这样可以:
复制代码代码如下:
sql="select∗from(sql = "select * from (sql="selectfrom(sql1) as temp1 union all select * from ($sql2) as temp2";

这是因为你的union的用法不正确的原因。在union操作中,order by语句不能出现在由union操作组合的两个select语句中。排序可以通过在第二个select语句后指定order by子句。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-2674.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

必看!LuatOS自定义C库全新教程,一文极速上手

今天继续讲LuatOS的开发,上一期简单说了一下如何移植LuatOS,相信很多朋友已经看过了。那么今天,我就开始讲C和Lua调用的部分教程。 LuatOS相关资料及Lua语言的官方定义,详见以下链接: LuatOS仓库: https:/…...

虚拟内存和地址空间

目录 一、物理内存vs虚拟内存 二、物理内存空间和虚拟内存空间 三、32bit的地址空间 四、cpu位宽和cpu地址总线宽 五、虚拟内存地址空间划分 六、虚拟地址和物理地址的映射 早期的计算机程序都是直接跑在物理内存上的,这就要求程序大小不能超过物理内存的上限…...

STM32CubMx自学笔记(一)-LED灯翻转

STM32CubMX自学笔记(一)---LED灯翻转工程创建系统具体配置工程代码编写下载验证结语工程创建 首先得安装STM32CubMx软件。具体安装步骤参照 保姆级安装步骤,这里将不再赘述,第一节主要是介绍新工程的创建,首先在桌面打…...

十四、Python第十四课——文件和异常

(请先看这篇文章:https://blog.csdn.net/GenuineMonster/article/details/104495419) 如果看完这篇博文,你的问题还是没有解决,那么请关注我的公众号,后台发消息给我吧,当天回复&#x…...

微信小程序趋势及前景,大厂直通车!

最近看到群里看到一个女生,讲述了她从开始选择Android,经过非常努力的学习和挣扎,然而最后面对当前的环境却不得不放弃。看完以后真的非常替她感觉惋惜,如果早几年入行可能结果会比现在好很多,但可惜,这就是…...

设计模式导读助记

各个设计模式的详细介绍都已经完成,但是不经常用总会忘,所以我想用 一句话 总结设计模式,思考模式的真正意图,再用 一点提示 来思考代码如何实现 写在前面 我整理的设计模式这一个系列,主要是结合了以下几本书 : 《设…...

RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之环境搭建(1/3)

文章目录前言硬件准备百问网STM32F103ESP8266 01SESP8266 介绍ESP8266 01S技术规格参数软件准备下载安装 Keil μVision5Pack Installer安装 ST-Link 驱动获取RT-Thread源码下载安装 RT-Thread env 工具文章列表 RT-Thrad|STM32F103ESP8266 S01RT-Thread联网之环境搭建(1/3)RT…...

elementUI-Tree 树形控件的使用

elementUI-Tree 树形控件的使用 实现效果: 控件的官方使用说明 控件要求返回的数据结构 {"success": true,"code": 20000,"message": "成功","data": {"items": [{"id": "1394579386…...

2021java1年经验公司面试真题

1面我就省略了,主要就是看你的以前工作情况,以前工作内容能不能清晰表达,还有一些简单的java基础问题,大概20多分钟。二面就是40分钟基础,20分钟业务,10分钟个人情况。下面是二面问题 1.自我介绍 做一下自…...

Unity基础之C#核心篇笔记4:多态

Unity基础之C#核心篇笔记4:多态多态1.多态的概念2.解决的问题3.多态的实现4.总结抽象类和抽象方法1.抽象类2.抽象函数3.总结4.练习题接口1.接口的概念2. 接口的申明3.接口的使用4.接口可以继承接口5.显示实现接口6.总结7.练习题密封方法1.密封方法基本概念2.实例3.总…...

LeetCode每日一题 - 有多少小于当前数字的数字

题目&#xff1a; 给你一个数组 nums&#xff0c;对于其中每个元素 nums[i]&#xff0c;请你统计数组中比它小的所有数字的数目。 换而言之&#xff0c;对于每个 nums[i] 你必须计算出有效的 j 的数量&#xff0c;其中 j 满足 j ! i 且 nums[j] < nums[i] 。 以数组形式返回…...

用Python爬取彼岸图网图片

用Python爬取彼岸图网图片 *使用了 四个模块 import time import requests from lxml import etree import os 没有的话自行百度安装。 #encoding utf-8 import time import requests from lxml import etree import os# http://www.netbian.com/ 爬虫 if __name__ __mai…...

第k个数(快速选择)

算法思路 快速选择&#xff1a; 1.即任意选一个数&#xff0c;将数组划分为二。 2.最终根据该数所在的位置&#xff0c;即第&#xff1f;大&#xff0c;选择第k大的数字所在区间进行划分。 时间复杂度分析&#xff0c;第一次划分n,下一次划分期望n/2&#xff0c;n/4…累加和小…...

yolov5 detect.py报错

新手求助 yolov5训练了自己的数据集后&#xff0c;test没问题&#xff0c;但是运行detect.py就报错了&#xff0c;一直找不到问题所在&#xff0c; 求大佬指点指点...

DEX 争霸战火升级,BabySwap 会否成为下一代黑马?

在 AMM机制大力推动下&#xff0c;DEX的群雄争霸比预想中来得要快且凶猛。伴随着诸如高盛等主流资本逐步认可DeFi 的意义&#xff0c;在真正的去中心化金融爆发的前夜&#xff0c;可以说谁抢占了DEX 红海的先机&#xff0c;谁就赢得了未来。 从早期以太坊的Uniswap和DoDo&…...

flutter 常用的第三方组件

引用文章链接&#xff1a; https://www.jianshu.com/p/a523e5f131b2 1、格式化日期时间组件&#xff1a;https://pub.dev/packages/date_format 2、日期选择组件&#xff1a;https://pub.dev/packages/flutter_cupertino_date_picker 3、轮播图组件&#xff1a;https://pub.…...

Android面试回忆录:帮助程序员提高核心竞争力的30条建议,真香!

**新技术层出不穷&#xff0c;去年kotlin到如今Flutter&#xff0c;技术迭代&#xff0c;你是否会变得固步自封&#xff1f;**那么看本篇文章帮你解决问题&#xff0c;让你知道怎么样学习&#xff0c;学习那些技术点才能不被时代的迭代快速淘汰&#xff01; 首先&#xff0c;先…...

2021-05-30解决centos+宝塔面板,FTP传输421 Too many connections问题错误

解决centos宝塔面板&#xff0c;FTP传输421 Too many connections”问题错误 1、首先连入服务器 在/www/server/pure-ftpd/etc下&#xff0c;找到pure-ftpd.conf 2、vim pure-ftpd.conf 没有vim的&#xff0c;用其他编辑软件也可以 3、找到 #Maximum number of sim clients wit…...

RK3399 DDR频率修改

RK3399 DDR频率修改 一、DDR当前频率获取与可调节范围 1、获取当前DDR频率、可调值、容量 cat /sys/class/devfreq/dmc/cur_freq2、查看DDR频率可调节的值 cat /sys/class/devfreq/dmc/available_frequencies3、获取DDR容量 cat /proc/meminfo二、DDR测试定频 1、因为RK3…...

javascript正则表达式常用合集

javascript正则表达式常用的合集 参考网址 {n}: n 是一个正整数&#xff0c;匹配了前面一个字符刚好出现了 n 次 {n,}: n是一个正整数&#xff0c;匹配前一个字符至少出现了n次 {n,m}: n 和 m 都是整数。匹配前面的字符至少n次&#xff0c;最多m次。如果 n 或者 m 的值是0&…...

Swram/BZZ怎么挖矿?

随着IPFS、Filecoin和Chia的市场逐渐展开并取得火爆的成果&#xff0c;人们越来越关注分布式存储网络项目市场的发展前景。最近一款“天王级”分布式存储网络项目Swarm迅速地进入人们视野当中并获得认可。那么Swarm项目究竟是什么来头&#xff0c;能够产生什么收益和未来前景怎…...

鸿蒙OS短视频开发--边下边播实现

下载工具Mp4DownloadUtils 参考文章&#xff1a;Android 因moov播放网络mp4失败的解决办法_maowentao0416的博客-CSDN博客 主要是让moov移到前面&#xff0c;实现边下边播。短视频刷视频快速出现就是用了边下边播的原理。 import com.mytoutou.video.manage.player.ui.Video…...

栈和队列(二) : 用栈实现队列

leetcode232.用栈实现队列 https://leetcode-cn.com/problems/implement-queue-using-stacks/ 使用栈实现队列的下列操作&#xff1a; push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。…...

Hudi 系列(二)- 编译 hudi

编译 hudi 如果是第一次编译 hudi 会花很长时间&#xff0c;maven 本地仓库为空的情况下&#xff0c;我花了40分钟&#xff08;视网络环境&#xff09;。编译步骤如下&#xff1a; 下载 releace 源代码&#xff0c;https://hudi.apache.org/releases&#xff0c;现在的最新版本…...

因为一个字符校对问题,我的大厂面试挂了

摘要&#xff1a;字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。 本文分享自华为云社区《一个字符校对规则引发的血案》&#xff0c;原文作者&#xff1a;DRS技术快客 。 问题现场 我们先看一个建表语句 CREATE TABLE collate_test ( val1 char(32…...

jvm学习参考资料

参考资料 本书名为“深入理解Java虚拟机”&#xff0c;但要想真的深入理解虚拟机&#xff0c;仅凭一本书肯定是远远不够的&#xff0c; 读者可以通过以下方式查找到更多关于Java虚拟机方面的资料。笔者在写作此书的时候&#xff0c;也从下面这 些参考资料中得到过很大的帮助。 …...

监控系统实践第12天:5天上手Laravel8.5之路由篇(1/5)

监控系统实践第12天&#xff1a;5天上手Laravel8.5之路由篇&#xff08;1/5&#xff09;前言安装与配置Laravel基础功能&#xff1a;路由(Route)路由是什么&#xff1f;设置路由的请求方式定义路由的路径定义路由的内容闭包中定义内容控制器中定义内容视图中定义内容其它内容的…...

今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 6月1日

今日早报|每日晨报|每日简报|热点新闻简报|一分钟简报|每日早报精选12条新闻简报 今日早报——365资讯简报&#xff0c;每天精选12条热点新闻简报1条微语&#xff0c;每天一分钟&#xff0c;知晓天下事&#xff01; 2021年6月1日 星期二 农历四月廿一 儿童节 1、新修订《未成…...

windowes 虚拟机添加 Mac os 时,运行 Starting VMware services...闪退

先以 管理员身份 运行cmd 然后进入到脚本所在目录&#xff0c;运行目录即可...

while 循环语法结构

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"> <meta name"viewport" content"widthdevice-width, initi...

张沈鹏诗歌集

[sizelarge]张沈鹏诗歌集 2007.12.23版张沈鹏,男,汉族,江苏海安人氏.其人放浪形骸,不拘小节,处事豁达;然生性懒散,不喜运动,虽身形高大,实体力不堪也.好读书,吟诗,尤好编程,每每研之,通宵以至达旦.Email/Msn/Gtalk:zsp007gmail.com 1.题目:世界尽头,会不会响起我们相爱时的歌 2…...

【思考进步】2022年1月读书思考和改进方案

一、进度总结 先给出结论&#xff0c;按之前预想的进度来说&#xff0c;是失败的。 再次基础上&#xff0c;我经过反思得出一些结论和后续建设性的改进方案&#xff0c;希望给自己和想读书的各位一些启发。 二、理想进度和实际进度的差别 首先是进度上的严重落后&#xff0…...

应对互联网变局,这 8 件事必须要做。

阅读本文大概需要 1.8 分钟。昨晚直播说了挺多&#xff0c;整体都是跟互联网相关&#xff0c;也提到整体环境&#xff0c;有不少人失去工作后不知所措&#xff0c;也有不少人说创业的合规成本太高应该怎么做&#xff1f;更有不少在职场的人表示大家太卷又该怎么应对等等。上述这…...

张家咀

说起我们的村子&#xff0c;我真不知道它的来历。这周围方圆几里地&#xff0c;称李家寨。邻近的村与村的距离&#xff0c;长的也不过就半里地&#xff0c;短的不过几十米&#xff0c;几乎是挨着的。有的村大点的叫大塆&#xff0c;村小的叫小塆。我们的村子&#xff0c;叫张家…...

C++pta A1022digital(6张hashmap)

A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an unique 7-digit number as its ID. Given any query from a reader, you are suppos...

网络间谍??

<peng博商业周刊》刊登文章讲述一名中国"网络间谍"如何在西方网络安全专家的"人肉"搜寻下被暴露真身。 《peng博商业周刊》报道说&#xff0c;戴尔公司负责网络安全工作的斯图尔特&#xff08;Joe Stewart&#xff09;在行业名声很响&#xff0c;他在…...

offsetof 定义

使用实例&#xff1a; typedef struct { const AVClass *class; char *expr_str; AVExpr *expr; double var_values[VAR_VARS_NB]; enum AVMediaType type; } SetPTSContext; #define OFFSET(x) offsetof(SetPTSContext, x) #define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_F…...

C语言:offsetof()的用法

offsetof()是一个宏 返回的是&#xff1a; 结构体成员 在内存中的偏移量。 #include<stdio.h> #include<stddef.h> struct S {char c1;int a;char c2; }; int main() {//offsetof()返回 结构体成员 在内存中的偏移量printf("%d\n", offsetof(struct S, …...

自定义实现offsetof

什么是offsetof&#xff1f; offsetof&#xff0c;程序语言&#xff0c;该宏用于求结构体中一个成员在该结构体中的偏移量。 头文件&#xff1a;stddef.h 宏形式&#xff1a; size_t offsetof( structName, memberName ) 说明&#xff1a;1. 第一个参数是结构体的名字&#xff…...

Offsetof的实现

offsetoff-用来计算结构体存储时元素存储地址相对于起始存储地址的一个偏移量的一个宏 实现代码&#xff1a; #include<stdio.h> #define Offsetof(struct_name,member_name) (int)&(((struct_name*)0)->member_name) struct S { int a; char b; do…...

offsetof函数的使用和宏实现

文章目录一、offsetof函数的定义二、offsetof函数的使用三、用宏实现offsetof一、offsetof函数的定义 size_t offsetof(structName,memberName); 引用头文件<stddef.h>返回结构体中一个成员在该结构体中的偏移量 二、offsetof函数的使用 #include<stdio.h> #inc…...

C offsetof

2019独角兽企业重金招聘Python工程师标准>>> void test4() {struct student {char a;int b;};struct student stu {1,1};struct student* p &stu;printf("addr is :%d\r\n", (char*)&(stu.b) - (char*)&(stu.a));printf("addr is :%d\…...

对宏offsetof理解

#ifndef offsetof #define offsetof(TYPE, MEMBER) ((size_t)&((TYPE*)0)->MEMBER) #endif offset这个宏有两个参数 TYPE 和 MEMBER ,这个宏求的是结构 TYPE 中 MEMBER 成员的偏移量。 先理解最里面的部分&#xff1a; ((TYPE*)0)->MEMBER 这里将0地址转换为TYPE*…...

pythonmainoffset_宏offsetof分析

1、前言 在C语言的结构体中&#xff0c;由于字节对齐的问题&#xff0c;所以成员的地址并不能直接根据数据类型的大小进行计算&#xff0c;使用宏offsetof可以获得结构体成员相对于结构体首地址的字节偏移量。 2、offsetof宏实现 在C标准库中offsetof的声明如下&#xff0c;需要…...

C语言实现offsetof

/* (s *)0 0 强制转换成s类型指针&#xff0c;指针指向0地址((s *)0)->m s的成员变量m&#xff0c;无法取值&#xff0c;可以取地址&(((s *)0)->m) 取成员变量m的地址&#xff0c;首地址是0&#xff0c;成员变量m的地址就是该结构体的偏移(size_t) 将地址转换成size_…...

[论文阅读] Curriculum Semi-supervised Segmentation

[论文地址] [代码] [MICCAI 19] Abstract 本研究调查了半监督CNN分割的课程式策略&#xff0c;它设计了一个回归网络来学习图像级信息&#xff0c;如目标区域的大小。这些回归被用来有效地规范分割网络&#xff0c;约束未标记图像的softmax预测&#xff0c;使其与推断的标签分…...

Linux offsetof宏定义

#include<stddef.h> size_t offsetof ( type, member )#define offsetof ( TYPE, MEMBER) \( ( size_t ) & ( ( TYPE *) 0 ) ->MEMBER )The macro return the offset of the field “member” from the start of struct “type”. 例如&#xff0c; …...

offsetof宏的模拟实现

目录前言offsetof介绍模拟实现前言 本文介绍并模拟实现宏offsetof offsetof介绍 格式&#xff1a;offsetof(type, member) 头文件&#xff1a;<stddef.h> 这个宏有两个参数&#xff1a; type是一个结构体类型或联合类型&#xff1b; member是结构体或联合的某一个成员&…...

关于offsetof宏

最近做某项目撸代码时用到了offsetof宏&#xff0c;第一次使用这个宏&#xff0c;项目结束后对其用法也略知一二&#xff0c;现分享如下。位于stddef.h中的offsetof&#xff08;&#xff09;宏&#xff0c;是获得struct中某成员相对于struct首地址的偏移量&#xff0c;以byte为…...

offsetof宏

宏的作用&#xff1a; 计算结构体成员的偏移&#xff0c;从结构类型的开头返回字段成员的偏移量。 宏定义&#xff1a;#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER) TYPE:结构名称&#xff08;譬如struct definestruct&#xff09; ((TYPE*)0): 取…...