首页 >

MySQL or条件可以使用索引而避免全表

数据库|mysql教程MySQL or条件可以使用索引而避免全表
MySQL基础教程,MySQL or条件可以使用索引而避免全
数据库-mysql教程
网站的源码下载,Ubuntu终止下载源,爬虫同盾科技,sinsiu php,弥勒seo网站lzw
在某些情况下,or条件可以避免全表扫描的。 1 .where 语句里面如果带有or条件, myisam表能用到索引, innodb不行。1)myisam表:
o2o lbs 源码,ubuntu无线输密码,c 爬虫爬视频,php 不好,seo顾问前景lzw
修改网站源码工具,csdn vscode配置,ubuntu设置允许安装应用,tomcat做什么,sqlite禁用自动提交,带农历的时间插件,腾讯的前端开发框架,网络爬虫数据采集,PHP action=,大同seo培训,上传网站下载,网页画笔软件,ectouch 免费模板下载,wordpress通用页面模板下载地址,虚拟服务器管理系统源码,口红机小程序源码教程lzw

在某些情况下,,or条件可以避免全表扫描的。

1 .where 语句里面如果带有or条件, myisam表能用到索引, innodb不行。

1)myisam表:
CREATE TABLE IF NOT EXISTS `a` (
`id` int(1) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`aNum` char(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

mysql> explain select * from a where id=1 or uid =2;
+—-+————-+——-+————-+—————+————-+———+——+——+—————————————+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+—-+————-+——-+————-+—————+————-+———+——+——+—————————————+
| 1 | SIMPLE | a | index_merge | PRIMARY,uid | PRIMARY,uid | 4,4 | NULL | 2 | Using union(PRIMARY,uid); Using where |
+—-+————-+——-+————-+—————+————-+———+——+——+—————————————+
1 row in set (0.00 sec)

2)innodb表:

CREATE TABLE IF NOT EXISTS `a` (
`id` int(1) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`aNum` char(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

mysql> explain select * from a where id=1 or uid =2;
+—-+————-+——-+——+—————+——+———+——+——+————-+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+—-+————-+——-+——+—————+——+———+——+——+————-+
| 1 | SIMPLE | a | ALL | PRIMARY,uid | NULL | NULL | NULL | 5 | Using where |
+—-+————-+——-+——+—————+——+———+——+——+————-+
1 row in set (0.00 sec)

2 .必须所有的or条件都必须是独立索引:
+——-+———————————————————————————————————————-
| Table | Create Table
+——-+———————————————————————————————————————-
| a | CREATE TABLE `a` (
`id` int(1) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`aNum` char(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 |
+——-+———————————————————————————————————————-
1 row in set (0.00 sec)

explain查看:
mysql> explain select * from a where id=1 or uid =2;
+—-+————-+——-+——+—————+——+———+——+——+————-+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+—-+————-+——-+——+—————+——+———+——+——+————-+
| 1 | SIMPLE | a | ALL | PRIMARY | NULL | NULL | NULL | 5 | Using where |
+—-+————-+——-+——+—————+——+———+——+——+————-+

1 row in set (0.00 sec)

全表扫描了。


MySQL or条件可以使用索引而避免全表
  • MySQL 两个经纬度之间的距离由近及远排序
  • MySQL 两个经纬度之间的距离由近及远排序 | MySQL 两个经纬度之间的距离由近及远排序 ...

    MySQL or条件可以使用索引而避免全表
  • Linux下MySQL备份脚本
  • Linux下MySQL备份脚本 | Linux下MySQL备份脚本 ...

    MySQL or条件可以使用索引而避免全表
  • MySQL中MyISAM与InnoDB的区别
  • MySQL中MyISAM与InnoDB的区别 | MySQL中MyISAM与InnoDB的区别 ...