mysql is null走索引_Mysql数据库索引IS NUll ,IS NOT NUll ,!= 是否走索引
声明在前面
总结就是 不能单纯说 走和不走,需要看数据库版本,数据量等 ,希望不要引起大家的误会,也不要被标题党误导了。
1 数据库版本:
2 建表语句
CREATE TABLE s1 (
id INT NOT NULL AUTO_INCREMENT,
key1 VARCHAR(200),
key2 VARCHAR(200),
key3 VARCHAR(200),
key_part1 VARCHAR(200),
key_part2 VARCHAR(200),
key_part3 VARCHAR(200),
common_field VARCHAR(200),
PRIMARY KEY (id)
) ENGINE=INNODB CHARSET=utf8;
3 建索引语句
CREATE INDEX isz_key1 ON s1(key1);
CREATE INDEX isz_key2 ON s1(key2);
CREATE INDEX isz_key3 ON s1(key3);
CREATE INDEX idx_key_part ON s1 (key_part1, key_part2, key_part3);
4 铺底数据
DELIMITER $$
CREATE PROCEDURE pre ()
BEGIN
DECLARE i INT;
SET i= 0;
WHILE
i< 9000DO
INSERT INTO s1 (
key1,
key2,
key3,
key_part1,
key_part2,
key_part3,
common_field
)
VALUES
('a','注意应收热热账款状态为有效状态下,资源编号与应热热付流水号一一对应,(已结佣、已热热、已失效3种情况为无效热热,其他均为有效状态)','cc','a应收账款状态为a','cc','注意应erect账款状态为有效状态下,资源编号与应付流水号一一对应,(已结佣、已热热无效、已失效3种情况为热热状态,其他均为有效状态)','ddff');
SET i= i + 1;
END WHILE;
END $$
CALL pre ();
DROP PROCEDURE pre;
select COUNT(1)FROM s1;
IS NULL ,IS NOT NUll 是否走索引
EXPLAIN SELECT *FROM s1 WHERE s1.`key1` IS NULL; 表里 key1 为is null的总数为0 查询is null 走索引
EXPLAIN SELECT *FROM s1 WHERE s1.`key1` IS not NULL; 表里 key1 的列 is not null 的总数为0,不存在值为null 查询is not null 不走索引
Is null count为19012条 ,is not count为9条 实验结果 is null 和 is not null 都走索引
测试application 表,is null count有305条,表总有324条 ,is null 不走索引
总结:并不是 is null ,is not null走和不走索引是和数据量或者和其他元素有关系(这里我只是测试到和数据量有关系) sql优化器在执行的时候会计算成本,其实和基数,选择性,直方图有关,其实就是看你所搜索的部分占全表的比例是走索引还是全表成本低。
!=走索引吗?
<> 和!= 是同一个意思 ,都是不等于
测试一 <> 走索引,存在<>的数据量有9条
测试二<>走索引存在不等于的数据量有305条
测试三 <> 不走索引 值都是“abc”,不是“abc”的总条数为0
SELECT COUNT(1)FROM s1 WHERE s1.`key3` ='abc'; -- 0
测试四 <>走索引
总结:并不能一句话说 走和不走,需要看条件,比如数据量,等于“abc”的数据量和不等于“abc”的量,mysql在执行的时候会判断走索引的成本和全表扫描的成本,然后选择成本小的那个
mysql is null走索引_Mysql数据库索引IS NUll ,IS NOT NUll ,!= 是否走索引相关推荐
- linux mysql 实战_Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06
Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06 视频教程学习地址 Oracle/MySQL数据库学习专用QQ群:336282998.189070296 学完风哥本课程能熟悉 ...
- mysql 建索引_mysql数据库正确建立索引及使用
普通mysql运行,数据量和访问量不大的话,是足够快的,但是当数据量和访问量剧增的时候,那么就会明显发现MySQL很慢,甚至down掉,那么就要考虑优化我们的mysql了.其中优化mysql的一个重要 ...
- mysql索引 聚集索引_MySql数据库索引-聚集索引和辅助索引
InnoDB存储引擎索引: B+树索引:不能找到一个给定键值的具体行,能找到的只是被查找数据行所在的页.然后把页加载到内存,在查询所要的数据. 全文索引: 哈希索引:InnoDB会根据表的使用情况自动 ...
- mysql 主从 索引_Mysql繁忙主从库在线修改表结构与添加索引问题
本帖最后由 jan_1985 于 2014-1-15 13:28 编辑 Mysql繁忙主从库在线修改表结构与添加索引问题 一直以来,生产情况下都有修改索引和修改字段的需求,但是对锁表引起的访问不便是会 ...
- mysql部门人员排序设计_MySQL数据库访问性能优化
MYSQL应该是最流行的WEB后端数据库.大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储. MYS ...
- mysql增删改查大全_MySQL数据库增删改查SQL语句(2018整理集合大全)
查看数据库 show databases; 使用数据库 use 数据库名; 创建数据库 CREATE DATABASE 数据库名; 删除数据库 DROP DATABASE 数据库名; 创建表 crea ...
- mysql数据和性能平衡点_MySQL数据库性能优化(2)
4.影响SQL性能的要素 MySQL数据库的性能不止受到性能参数和底层硬件条件的影响,在这两个条件一定的情况下,开发人员对SQL语句的优化能力更能影响MySQL数据库的性能.由于MySQL中不同数据库 ...
- mysql工资修改为空_mysql数据库技术1——基本的增删查改的sql语句
1.数据库语言的分类 DDL:数据库定义语言 data Definition language 用于创建.修改.和删除数据库内的数据结构,如: 1:创建和删除数据库(CREATE DATABASE | ...
- mysql 从库数据损坏_MySQL数据库中数据损坏恢复全过程
MySQL数据库中数据损坏恢复全过程 前几天因为MySQL数据库部分数据损坏原因,我尝试了下恢复数据,之后整理以下文档,供各位参考,以备各位同事以后如有类似问题,可以少走些弯路,尽快解决问题. 环境: ...
最新文章
- php源码编译常见错误解决方案大全
- Java提高——多线程(二)join、sleep、yield
- 音视频技术开发周刊 | 133
- 致家长:疫情期间教育好自己的孩子,就是你最重要的事业!
- centos7.3 安装 mysql-5.7.13
- C++强化之路之线程池开发整体框架(二)
- 国外html游戏发展历史,17个国外游戏行业的网页设计欣赏
- HTML_CSS_JS_JSON
- csv 读写 python_Python CSV读写
- Python BFS 提取二值图联通域
- Paxos在大型系统中常见的应用场景
- linux 设置自动定时清理日志
- Unity打包篇:关于MMD模型贴画在安卓手机上无法显示的问题。
- 【问题思考总结 线代】为什么非齐次方程的解是齐次通解加上一个非齐次特解?【几何直观+代数证明】
- python软件是免费的吗-python免费吗
- UDIMM、RDIMM和LRDIMM
- 怪物之心无法触发_异度之刃2解锁稀有异刃力男支线怪物之心BOSS位置攻略
- csp计算机专业,中国计算机学会推出CSP非专业级别认证
- MPLS多协议标签交换技术
- PyTorch中的常见报错总结
热门文章
- Firefox开发者工具里的CSS Flexbox Inspector
- SAP Spartacus如何为不同的environment设置不同的baseUrl
- why configuration from BSP application is loaded
- 如何查询SAP Cloud for Customer系统升级和维护时间
- SAP UI5 Web Component React应用如何在Component之间跳转
- 一个ABAP重构的实例:CL_CRM_LEAD_CREATE~SELECT_CAMPAIGNS_BY_SQL
- My FioriTest navigation from master page to detail page
- SAP Fiori attachment rename debug
- SAP WebIDE里OData service catalog的实现原理
- ABAP help document F1