mysql or条件可以使用索引而避免全表扫描_MySQL
bitsCN.com
在某些情况下,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)
全表扫描了。
摘自 hguisu的专栏
bitsCN.com
热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Windows10有一个免费的反病毒程序,叫做WindowsDefender,它提供了实时保护,可以在电脑上进行扫描。这也使您可以执行定制扫描,从而可以指定特定的文件夹或驱动器来扫描恶意软件。因为你只需要扫描这个文件夹,所以扫描的时间会比扫描整个机器要快很多。如下所示,我们为您的特定文件夹提供了两个定制扫描的方法。Win10是如何使用WindowsDefender来扫描文件夹中的恶意软件。若要扫描个别文件夹及其子文件夹,最简单的方式是右击该文件夹,然后选择「使用WindowsDefender扫描

1、打开网易云音乐,点击我的,点击本地音乐。2、点击右上角的三个点。3、点击扫描本地音乐。4、点击下方的扫描设置。5、往左滑动过滤小于60秒的音频文件。6、返回点击全盘扫描,就可以扫描到全部的本地音乐的。

很多用户使用惠普打印机扫描文件之后,想要直接扫描成一个pdf文件,但是不知道怎么样操作才能成功,只要在电脑中使用扫描仪程序就可以了。惠普打印机扫描怎么扫描成一个pdf:1、首先打开电脑上的扫描仪程序。2、然后在页面设置中选择“另存PDF”。3、然后在右下角按“扫描”开始扫描第一个文件。4、完成之后,点左下角的“+”图标,就可以增加新的扫描页面。5、就可以看到原本文件边上有新的扫描框。7、最后完成之后,选择“保存”就可以保存这些PDF文件了。

在夸克软件中,丰富多样的功能为用户带来了便捷和乐趣,其中扫描功能尤为受欢迎。通过扫描功能,用户可以轻松扫描二维码,无论是快速登录网站、添加好友,还是下载应用,都能一键完成。那么,究竟该如何使用夸克二维码的扫描功能呢,还不知道究竟该如何使用的玩家们千万不容错过,快来跟着本站小编为大家带来的本文详细了解一下吧。夸克二维码怎么扫答案:【夸克】-【三横图标】-【拍照扫描】。具体步骤:1、首先打开夸克软件,进入到首页中后我们点击右下角的【三横图标】;2、然后在我的页面中往上滑动到页面的下方找到【拍照扫描】

处理方法:1、在ps软件中打开要处理的扫描图片;2、点击顶部工具栏的“滤镜”-“锐化”-“智能锐化”;3、在弹出的窗口中,根据需求选择锐化半径,点击“确定”;4、点击“文件”-“储存为”,另存为一个文件即可。

在C#开发中,随着网络技术的不断发展,安全问题也愈加严峻。为保障应用程序的安全性,开发人员需要注意安全漏洞的扫描与修复。本文将从以下几个方面介绍注意事项。一、注意数据传输安全在应用程序中,数据传输安全非常重要。特别是在使用网络传输数据时,应该尽可能地使用安全的协议和加密算法。为了保障数据的完整性和机密性,建议使用安全套接字层(SSL)或传输层安全(TLS)等

如何在PHP中使用二维码扫描?二维码扫描在现代生活中已经变得非常常见。无论是支付宝、微信支付还是其他各种应用,都可以通过扫描二维码来进行快速的支付或者信息传递。在PHP中,我们也可以很方便地实现二维码的扫描功能。本文将介绍如何使用PHP进行二维码扫描,并提供相应的代码示例。首先,我们需要一个PHP的二维码生成库,这里我们选择使用"PHPQRCode"库。

2022年,Apple为iPhone和iPad上的Notes应用程序添加了一项新功能,可让您快速扫描打印或手写文本并将其保存为数字文本格式。继续阅读以了解其工作原理。在早期版本的iOS和iPadOS上,将文本扫描到Apple的Notes应用程序中需要点击笔记的文本字段,然后点击弹出菜单中的“实时文本”选项。然而,Apple在2022年使现实世界的笔记数字化变得更加容易。以下步骤向您展示了如何在运行iOS15.4或iPadOS15.4及更高版本的设备上完成此操作。在iPhone或iPad上,打开“
