首页 数据库 mysql教程 mysql or条件可以使用索引而避免全表扫描_MySQL

mysql or条件可以使用索引而避免全表扫描_MySQL

Jun 01, 2016 pm 01:43 PM
扫描

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
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Win10如何使用WindowsDefender对文件夹进行扫描。 Win10如何使用WindowsDefender对文件夹进行扫描。 Jul 10, 2023 pm 11:17 PM

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

网易云音乐怎么扫描本地音乐_网易云音乐扫描本地音乐教程 网易云音乐怎么扫描本地音乐_网易云音乐扫描本地音乐教程 Mar 25, 2024 pm 10:21 PM

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

惠普打印机扫描怎么扫描成一个pdf 惠普打印机扫描怎么扫描成一个pdf Feb 19, 2024 am 10:06 AM

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

夸克二维码怎么扫 夸克二维码怎么扫 Feb 27, 2024 pm 04:10 PM

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

扫描出来的文件模糊怎么处理 扫描出来的文件模糊怎么处理 Jan 05, 2021 pm 03:09 PM

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

C#开发注意事项:安全漏洞扫描与修复 C#开发注意事项:安全漏洞扫描与修复 Nov 23, 2023 am 08:26 AM

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

如何在PHP中使用二维码扫描? 如何在PHP中使用二维码扫描? Aug 19, 2023 pm 07:49 PM

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

在 iPhone 的 Notes 应用程序中扫描打印和手写笔记 在 iPhone 的 Notes 应用程序中扫描打印和手写笔记 Nov 29, 2023 pm 11:19 PM

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

See all articles