mysql 数据库查询测试_MySQL查询测试经验

测试表geoinfo,整个表超过1100万行,表结构:

CREATE TABLE`geoinfo` (

`objectid`int(11) NOT NULLAUTO_INCREMENT ,

`latitude`double NOT NULL,

`longitude`double NOT NULL,

`occupancy`bit(1) NOT NULL,

`time`datetime NOT NULL,

`cabid`varchar(16) NOT NULL,PRIMARY KEY(`objectid`),INDEX`idx_geoinfo_cabid_time`( `cabid`,`time`) USING BTREE

)

ENGINE=InnoDB

AUTO_INCREMENT=1

time字段为datetimes类型,建立了与cabid字段(varchar类型)的组合索引,整个表1100万+行。

测试结果:

1. between比"大于a and 小于b"效率稍高一点点,仅仅是一点点:

sql1:select time,objectid,cabid from geoinfo where time(time) BETWEEN time('07:00:00') and time('12:00:00')# and cabid='acitva'sql2:select time,objectid,cabid from geoinfo where time(time)>=time('07:00:00') and time(time)<=time('12:00:00')

sql1耗时10.180秒,sql2耗时11.760秒。

但一旦在where子句中加上cabid字段,即,select time,objectid,cabid from geoinfo where time(time) BETWEEN time('07:00:00') and time('12:00:00') and cabid='acitva'

耗时立刻减少到0.040秒。

2.or效率超过union all,且or的次数越多差距越明显(与网上多数的所谓"优化经验"不同):

sql 3:select time,objectid,cabid from geoinfo where cabid like'a%' or cabid like 'b%' or cabid like 'e%'sql4:

select time,objectid,cabid from geoinfo where cabid like'a%'

union all select time,objectid,cabid from geoinfo where cabid like'b%'

union all select time,objectid,cabid from geoinfo where cabid like'e%'

sql3的执行时间为6.590,7.090,6.880秒,多数为6.9秒以内;

sql4的执行时间为7.892,8.452,7.912秒。两者相差1-1.5秒。

sql 5:select time,objectid,cabid from geoinfo where cabid like'a%' or cabid like 'b%'sql6:select time,objectid,cabid from geoinfo where cabid like'a%'

union all select time,objectid,cabid from geoinfo where cabid like'b%'

sql 5的执行时间依次为,3.050,3.089,3.200秒

sql6的执行时间依次为,3.562,3.792,3.760秒,两者相差0.5秒左右。

而把like改为'='号时,

select time,objectid from geoinfo where cabid='udwadla' or cabid='osacmu' or cabid='unquekov'

or与union all差不多。

3.索引似乎只对简单的sql语句有提升,复杂一点的还是很慢。

例如:

select a.objectid as Aobjectid,b.objectid AS Bobjectid,a.time as Time fromgeoinfo_tiny a,geoinfo_tiny bwhere a.time=b.time and a.cabid='acitva' and b.cabid='abtyff'

其中对于geoinfo_tiny这样只有280万行的表,该语句执行时间就为95.361-100.004秒。索引似乎没什么用了。

试试连接查询:

select a.objectid as Aobjectid,b.objectid AS Bobjectid,a.time as Time fromgeoinfo_tiny ainner join geoinfo_tiny b on a.time=b.timewhere a.cabid='acitva' and b.cabid='abjoolaw'

多改几次cabid的值,防止缓存,测试结果为95.635,39.172,85.862秒,可见连接查询和多表查询区别不大。

4.对于使用count这样的聚合函数,有索引照样很慢。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

更改阿里云域名解析台里某个域名绑定的IP之后不能解析到新IP

1.由于要撤销一组负载均衡&#xff0c;所以需要更改阿里云域名解析台里某个域名由原来绑定的负载均衡公网IP换到服务器公网IP 2.在服务器上nginx指定了域名访问&#xff0c;开启nginx服务 3.暂时关闭该组负载均衡服务 4.实现通过服务器IP可以访问项目&#xff0c;域名访问不了 …

秒懂数据类型的真谛—Python基础前传(4)

一切编程语言都是人设计的&#xff0c;既然是人设计的&#xff0c;那么设计各种功能的时候就一定会有它的道理&#xff0c;那么设计数据类型的用意是什么呢&#xff1f; (一) 基本数据类型 基本数据类型&#xff1a; 数字 int字符串 str布尔值 bool列表 list元组 tuple字典 dic…

Linux 系统命令及其使用详解(大全)

Linux 系统命令及其使用详解(大全) (来源: 中国系统分析员) cat cd   chmod chown   cp cut   名称&#xff1a;cat   使用权限&#xff1a;所有使用者   使用方式&#xff1a;cat[-AbeEnstTuv] [--help] [--version] fileName   说明&#xff1a;把档案串连…

wordpress配置SMTP服务发送邮件

使用SMTP服务发送邮件&#xff0c;需要使用一个插件&#xff1a;http://wordpress.org/extend/plugins/wp-mail-smtp/ 下载完成以后解压到plugin目录&#xff0c;然后在插件中启用这个插件。 配置SMTP服务 SMTP的选项 发送一封测试邮件吧 >>> 本文转自齐师傅博客园博客…

使用rpm包安装mysql_centos下利用rpm包安装mysql

安装mysql步骤&#xff1a;第一、 http://www.mysql.com/downloads/mysql-4.0.html下载MySQL-client-5.0.96-1.glibc23.x86_64.rpm和MySQL-server-5.0.96-1.glibc23.x86_64.rpm第二、安装服务端&#xff1a;[rootlfl01 mysql]# rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rp…

maxN - 返回数组中N个最大元素 minN - 返回数组中N个最小元素

从提供的数组中返回 n 个最小元素。如果 n 大于或等于提供的数组长度&#xff0c;则返回原数组&#xff08;按降序排列&#xff09;。 结合使用Array.sort() 与展开操作符(...) &#xff0c;创建一个数组的浅克隆&#xff0c;并按降序排列。 使用 Array.slice() 以获得指定的元…

Linux 常用命令

Linux之所以受到广大计算机爱好者的喜爱&#xff0c;主要原因有两个&#xff0c;首先它是自由软件&#xff0c;用户不用支付费用就可以使用它&#xff0c;并可根据自己的需要对它进行修改。另外&#xff0c;它具有Unix的全部功能&#xff0c;任何使用Unix系统或想要学习Unix系统…

使用Server 2008新GPO做驱动器映射

在Server 2003的时代&#xff0c;我们为用户做网络驱动器映射(以下就直接称为Map Network Drive&#xff09;, 通常可能有以下的做法. 方法一: 做一个登录脚本&#xff0c;放在DC的netlogon目录&#xff0c;接着在“Active Directory用户和计算机”控制台的用户属性的Logon S…

electron 打包后 __static_electron开发客户端注意事项(兼开源个人知识管理工具“想学吗”)...

窗口间通信的问题electron窗口通信比nwjs要麻烦的多electron分主进程和渲染进程&#xff0c;渲染进程又分主窗口的渲染进程和子窗口的渲染进程主窗口的渲染进程给子窗口的渲染进程发消息subWin.webContents.on(dom-ready, () > {subWin.webContents.send(message, {title: s…

180118 有趣的人工智能对话小程序

print(Hello world!) #输入 print(What is your name?) # ask for their name 询问名字 myName input()   #该你来回答名字了 print(It is good to meet you, myName)  #根据你的名字来给你打个招呼 print(The length of your name is:)  #然后看下一句 print(len(…

Linux 内核调试器 调试指南

Linux 内核调试器内幕 KDB 入门指南 Hariprasad Nellitheertha (nhariprain.ibm.com), 软件工程师, IBM简介&#xff1a; 调试内核问题时&#xff0c;能够跟踪内核执行情况并查看其内存和数据结构是非常有用的。Linux 中的内置内核调试器 KDB 提供了这种功能。在本文中您将了解…

学习API HOOK,编写了一个winsock 的封包抓取程序,可免费使用;

开发环境是:windows 2000 delphi 7 监视API&#xff1a;recv,recvfrom,WSARecvEx,send,sendto,accept,bind,closesocket,connect socket 版本&#xff1a;wsock32.dll/*ws2_32.dll(暂时有兼容问题) 目前还不支持修改封包&#xff1b; 当前实现针对某个进程或多个选定进程的通…

fib函数用python编写_Python中利用函数装饰器实现备忘功能

“备忘”的定义“memoization”(备忘)这个词是由Donald Michie在1968年提出的&#xff0c;它基于拉丁语单词“memorandum”(备忘录)&#xff0c;意思是“被记住”。虽然它和单词“memorization”在某种程度上有些相似&#xff0c;但它并不是该单词的错误拼写。实际上&#xff0…

MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据&#xff0c;算是对MyBatis有一个初步的入门了&#xff0c;今天讲解一下如何使用MyBatis对users表执行CRUD操作。本文中使…

cifs mount 挂载共享目录_安装cifsutils解决linux挂载windows共享文件夹

1、安装mount.cifs软件包yum install cifs-utils -y如果是离线环境&#xff0c;请参考我的另一篇文章https://blog.csdn.net/qq_37119960/article/details/1083313732、开始挂载mount.cifs //192.168.1.110/share /usr/local/winshare -o useradministrator,pass123456参数说明…

JFinal框架

FJinal过滤器(tomcat) 创建java类继承JFinalConfig 会实现六个方法(有一个是拦截器的方法好像是,那个我好像看的跟struts2一样但是又没看懂暂时不写) Controller层的测试方法 Entity实体类 常用方法 查询 增加 删除 修改 转载于:https://www.cnblogs.com/guanzhuang/p/8317949.…

掌握 Linux 调试技术 使用 GDB 调试 Linux 软件

简介&#xff1a; 您可以用各种方法来监控运行着的用户空间程序&#xff1a;可以为其运行调试器并单步调试该程序&#xff0c;添加打印语句&#xff0c;或者添加工具来分析程序。本文描述了几种可以用来调试在 Linux 上运行的程序的方法。我们将回顾四种调试问题的情况&#xf…

集合之二:迭代器

迭代器的简单使用 在遍历容器时&#xff0c;我们可以使用for循环或者是增强for循环&#xff0c;但是不同的集合结构在遍历时&#xff0c;我们要针对集合特点采取不同的方式&#xff0c;比如List是链表&#xff0c;我们可以直接当做数组处理&#xff0c;但Map是Key—Value的形式…

简单使用ansible-playbook

1.使用以下命令给客户端安装httpd服务&#xff1a; [rootserver ~]# ansible testhost -m yum -a "namehttpd" 192.168.77.128 | SUCCESS > {"changed": true, "msg": "", "rc": 0, "results": ["Loaded …

原则

昨天例会上&#xff0c;领导分享了他最近看过的一本书《原则》。试想&#xff0c;工作上&#xff0c;生活中我的原则是什么呢&#xff1f;关于技术学习的原则。一开始的时候&#xff0c;一般都是遇到不会的再去学习&#xff0c;我一直比较喜欢带着问题&#xff0c;这样会学习效…