Mysql如何避免全表扫描的方法

2016-02-19 10:24 5 1 收藏

下面图老师小编跟大家分享一个简单易学的Mysql如何避免全表扫描的方法教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!

【 tulaoshi.com - 编程语言 】

在以下几种条件下,MySQL就会做全表扫描:
1数据表是在太小了,做一次全表扫描比做索引键的查找来得快多了。当表的记录总数小于10且记录长度比较短时通常这么做。
2没有合适用于 ON 或 WHERE 分句的索引字段。
3让索引字段和常量值比较,MySQL已经计算(基于索引树)到常量覆盖了数据表的很大部分,因此做全表扫描应该会来得更快。
4通过其他字段使用了一个基数很小(很多记录匹配索引键值)的索引键。这种情况下,MySQL认为使用索引键需要大量查找,还不如全表扫描来得更快。
对于小表来说,全表扫描通常更合适。但是对大表来说,尝试使用以下技术来避免让优化程序错误地选择全表扫描:
1执行 ANALYZE TABLE tbl_name 更新要扫描的表的索引键分布。
2 使用 FORCE INDEX 告诉MySQL,做全表扫描的话会比利用给定的索引更浪费资源。
SELECT * FROM t1, t2 FORCE INDEX (index_for_column)
WHERE t1.col_name=t2.col_name;
3启动 mysqld 时使用参数 --max-seeks-for-key=1000 或者执行 SET max_seeks_for_key=1000 来告诉优化程序,所有的索引都不会导致超过1000次的索引搜索。

来源:http://www.tulaoshi.com/n/20160219/1594509.html

延伸阅读
1、对于MySQL来说,有三种锁的级别:页级、表级、行级 页级的典型代表引擎为BDB。 表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。 行级的典型代表引擎为INNODB。 2、我们实际应用中用的最多的就是行锁 行级锁的优点如下: 1)、当很多连接分别进行不同的查询时减小LOCK状态。 2)、如果出现异常,可以减少数据的丢失。因为一次...
6.8 其他主题 本节包括几个主题,这些主题不完全适合于本章从client1到client5 的开发中的任一小节的内容: ■ 在使用结果集元数据帮助验证这些数据适合于计算之后,使用结果集数据计算结果。 ■ 如何处理很难插入到查询中的数据。 ■ 如何处理图形数据。 ■ 如何获得表结构的信息。 ■ 常见的MySQL程序设计...
标签: 电脑入门
MAC用户装好了扫描仪后,如何使用扫描仪扫描文件呢?今天图老师小编就帮大家解决这个问题吧。对扫描仪的操作不清楚的用户,快来看看下面的操作方法吧。 操作步骤: 1、将您要扫描的文件置于扫描仪平台上。 2、点按 Dock 中的 Launchpad 并在搜索栏中键入图像捕捉以打开图像捕捉。 3、OS X Mountain Lion:如果您的打印机配有文稿送纸...
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。下面分别介绍一下这些表的结构和内容: user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。 db权限表:记录各个帐号在各个数据库上...
一些MySQL发布对MySQL数据库中的系统表的结构进行了更改,添加了新权限或特性。当你更新到新版本MySQL,你应同时更新系统表,以确保它们的结构最新。首先备份mysql数据库,然后按照下面的程序操作。 在Unix或Unix类系统中,运行mysql_fix_privilege_tables脚本来更新系统表: shell mysql_fix_privilege_tables 你必须在服务器运行时执行该...

经验教程

820

收藏

82
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部