下表中有几百万条记录:

CREATE TABLE `customers` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`store_id` int(10) unsigned DEFAULT NULL,

`first_name` varchar(64) DEFAULT NULL,

`middle_name` varchar(64) DEFAULT NULL,

`last_name` varchar(64) DEFAULT NULL,

`email` varchar(128) DEFAULT NULL,

`phone` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `index_store_email` (`store_id`,`email`),

KEY `index_store_phone` (`store_id`,`phone`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

查询#1大约需要800毫秒:

从“客户”的SELECT COUNT(*)中“ store_id” = 1;

查询#2大约需要1.5毫秒:

从`customers`中选择COUNT(*),其中`store_id` = 1并且`email`为NULL;

查询#3耗时5秒:

从`customers`中选择COUNT(*),其中`store_id` = 1并且`email`不为空;

笔记:

>我简化了表格以提出问题,但是查询是相同的.

>是的,我的桌子已经过优化.

>是,两个字段都已建立索引,请参见上面的create语法.

>只有几个store_id,但是每个记录都有一个.

>很少有客户将电子邮件设置为空.

我发现这里有些奇怪:

>查询#1最简单!只有几个可能的INT值.不应该最快吗?

>为什么查询3这么慢?通过执行其他两个查询,然后从#2中减去#1,我可以将时间减少一半,但我不必这样做.

对这个看似基本的问题有什么想法吗?感觉我缺少一些简单的东西.我在DB学校上过课吗?

mysql not null 性能_如何使用NULL提高MySQL查询的性能?相关推荐

  1. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  2. mysql 2003报错_为什么不建议在 MySQL 中使用 UTF-8?

    正文 记得去年我在往MySQL存入emoji表情 时,一直出错,无法导入.后来找到办法 -- 通过把 utf8 改成 utf8mb4 就可以了,并没有深究. 一年后,我看到一篇文章讲到emoji文字占 ...

  3. mysql 做回归模型_技术分享 | 我对 MySQL 隔离级别的剖析

    隔离级别的产生 在串型执行的条件下,数据修改的顺序是固定的.可预期的结果,但是并发执行的情况下,数据的修改是不可预期的,也不固定,为了实现数据修改在并发执行的情况下得到一个固定.可预期的结果,由此产生 ...

  4. mysql数据库外连_数据库外连接及MySQL实现

    MySQL查询分为内连接查询和外连接查询,他们的区别在于:内连接查询的两个表示对等关系,根据条件进行匹配:外连接是以某一个表为主,两一个表根据条件进行关联.外连接分为左外连接.右外连接和全外连接.本文 ...

  5. mysql静态化设计_网站静态化与mysql优化

    一.伪静态 1.正则表达式的回顾 (1)要求取出练习的4个数字 (2)要求取出,形式为:xxx-yyy-xxx的数据 正则中几个概念: 子表达式:简单理解成用小括号括起的部分就是一个子表达式, 捕获: ...

  6. ubuntu安装mysql 密码忘了怎么办_在ubuntu上面安装mysql都密码忘记及一些常用命令...

    重改密码! # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking & ...

  7. c 对一个mysql数据库进行操作_用C语言操作MySQL数据库

    函数 描述 mysql_affected_rows() 返回上次UPDATE.DELETE或INSERT查询更改/删除/插入的行数. mysql_autocommit() 切换autocommit模式 ...

  8. mysql删除n行_订购记录并在MySQL中删除n行

    让我们首先创建一个表-mysql> create table DemoTable -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY ...

  9. mysql从dos界面_从DOS界面进入MYSQL数据库

    新手学习数据库,从比较简单的mysql开始.从DOS界面进入mysql数据库其实跟配置java环境变量一样,要先设置环境变量(右击我的电脑-属性-高级-环境变量). 找到mysql的安装位置,把安装目 ...

最新文章

  1. 李彦宏候选中国工程院院士
  2. Windows Mobile 设备中心 for vista 一览
  3. Laravel Auth 自定义user 模型目录结构
  4. COOKIE伪造登录网站后台
  5. .NET Core 和 .NET Framework 之间的关系
  6. MySQL与Oracle主键冲突解决方式
  7. autojs toast 可以改变字体颜色吗_喃喃札记 | 你真的需要一部pad做笔记吗?
  8. hdu 杭电题目分类
  9. 中国数字血压计市场趋势报告、技术动态创新及市场预测
  10. 实战Citrix XenDesktop 5.5部署
  11. Eclipse中快速使代码对齐?1张图搞定!
  12. 乐视max2 刷入第三方recovery 然后刷入root 包 root
  13. 热烈祝贺 | 方正璞华喜获“数字贸易专委会年度示范单位”殊荣及“终身荣誉会长”单位
  14. 第一课print()输出函数(包含心形图案代码)
  15. IT“茫一代”转型记:创业维艰 苦乐皆有
  16. linux vnc登陆,vnc登陆,4个步骤教你vnc登陆Linux
  17. python爬取淘宝天猫评论(通过cookie)
  18. 推荐系统常用数据集介绍
  19. Hadoop是做什么的,hadoop集群搭建作用
  20. 主控是sm2259xt,求量产工具,固态硬盘是七彩虹sl500 250G的

热门文章

  1. MIT校长公开信澄清:是学校与南科大合作,不是陈刚个人
  2. python htmlparser使用问题小结
  3. 网络工程师_记录的一些真题_2016下半年上午
  4. OSI七层 TCP/IP四层 TCP/IP协议栈: 不同的通信协议的大集合
  5. 机器视觉图像采集卡的功能与应用
  6. 实战:使用OpenCV+Python+dlib为人脸生成口罩
  7. YOLOv5实现自定义对象训练与OpenVINO部署全解析
  8. OpenCV+Tensorflow实现实时人脸识别演示
  9. 如何用OpenCV制作一个低成本的立体相机
  10. 都在抢论文第一作者,怎么解决?