解决MySQL数据库中与优化器有关的问题

2016-02-19 21:24 2 1 收藏

图老师小编精心整理的解决MySQL数据库中与优化器有关的问题希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

      MySQL采用了基于开销的优化器,以确定处理查询的最解方式。在很多情况下,MySQL能够计算最佳的可能查询计划,但在某些情况下,MySQL没有关于数据的足够信息,不得不就数据进行“有教养”的估测。

  当MySQL未能做“正确的”事时,可使用下述工具来帮助MySQL:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  使用EXPLAIN语句获取关于MySQL如何处理查询的信息。要想使用它,可在SELECT语句前添加关键字EXPLAIN:

mysql EXPLAIN SELECT * FROM t1, t2 WHERE t1.i = t2.i;
 
  使用ANALYZE TABLE tbl_name,为已扫描的表更新键分配。

  为已扫描的表使用FORCE INDEX,通知MySQL:与使用给定的索引相比,表扫描开销昂贵。

SELECT * FROM t1, t2 FORCE INDEX (index_for_column)
WHERE t1.col_name=t2.col_name; 

  USE INDEX和IGNORE INDEX也有一定的帮助。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  你可以调节全局或线程类系统变量。例如,用“--max-seeks-for-key=1000”选项启动mysqld,或使用“SET max_seeks_for_key=1000”来通知优化器:假定任何表扫描均不会导致1000个以上的键搜索。

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

延伸阅读
1:磁盘寻道能力,以高速硬盘(7200转/秒),理论上每秒寻道7200次.这是没有办法改变的,优化的方法是----用多个硬盘,或者把数据分散存储. 2:硬盘的读写速度,这个速度非常的快,这个更容易解决--可以从多个硬盘上并行读写. 3:cpu.cpu处理内存中的数据,当有相对内存较小的表时,这是最常见的限制因素. 4:内存的限制.当cpu需要...
标签: MySQL mysql数据库
随着网络的普及,基于网络的应用也越来越多。网络数据库就是其中之一。通过一台或几台服务器可以为很多客户提供服务,这种方式给人们带来了很多方便,但也给不法分子造成了可乘之机。由于数据都是通过网络传输的,这就可以在传输的过程中被截获,或者通过非常手段进入数据库。由于以上原因,数据库安全就显得十分重要。因此,本文就以上问题讨论...
问题描述: 我们要访问的表是一个非常大的表,四千万条记录,id是主键,program_id上建了索引。 执行一条SQL: select * from program_access_log where program_id between 1 and 4000 这条SQL非常慢。 我们原以为处理记录太多的原因,所以加了id限制,一次只读五十万条记录 select * from program_access_l...
注意,下述部分主要与DOUBLE和FLOAT列相关,原因在于浮点数的不准确本质。MySQL使用64位十进制数值的精度执行DECIMAL操作,当处理DECIMAL列时,应能解决大多数常见的不准确问题。 浮点数有时会导致混淆,这是因为它们无法以准确值保存在计算机体系结构中。你在屏幕上所看到的值通常不是数值的准确值。对于FLOAT和DOUBLE列类型,情况就是如此...
在 MySQL下,在进行中文模糊检索时,经常会返回一些与之不相关的记录,如查找 "%a%" 时,返回的可能有中文字符,却没有a字符存在。本人以前也曾遇到过类似问题,经详细阅读MySQL的Manual,发现可以有一种方法很方便的解决并得到满意的结果。 希望通过“标题”对新闻库进行检索,关键字可能包含是中英文,如下SQL语句: ...

经验教程

243

收藏

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