美文网首页JAVA后台开发_从入门到精通
15 估计查询性能和SELECT查询的速度

15 估计查询性能和SELECT查询的速度

作者: 笑Skr人啊 | 来源:发表于2017-04-27 13:49 被阅读0次
  • 估计查询性能

在大多数情况下,可以通过计算磁盘搜索来估计性能。对小的表,通常能在1次磁盘搜索中找到行(因为索引可能被缓存)。对更大的表,可以使用B-树索引进行估计,将需要log(row_count)/log(index_block_length/3 * 2/(index_length + data_pointer_length))+1次搜索才能找到行。

在MySQL中,索引块通常是1024个字节,数据指针通常是4个字节,这对于有一个长度为3(中等整数)的索引的500,000行的表,通过公式可以计算出log(500,000)/log(1024/3*2/(3+4))+1= 4次搜索。

上面的索引需要大约500,000 * 7 * 3/2 = 5.2MB,(假设典型情况下索引缓存区填充率为2/3),可以将大部分索引保存在内存中,仅需要1-2调用从OS读数据来找出行。

然而对于写,将需要4次搜索请求(如上)来找到在哪儿存放新索引,并且通常需要2次搜索来更新这个索引并且写入行。

注意,上述讨论并不意味着应用程序的性能将缓慢地以logN 退化!当表格变得更大时,所有内容缓存到OS或SQL服务器后,将仅仅或多或少地更慢。在数据变得太大不能缓存后,将逐渐变得更慢,直到应用程序只能进行磁盘搜索(以logN增加)。为了避免这个问题,随数据增加而增加 键高速缓冲区大小。对于MyISAM表, 由key_buffer_size系统变量控制 键高速缓冲区大小。

  • SELECT查询的速度

总的来说,要想使一个较慢速SELECT ... WHERE更快,应首先检查是否能增加一个索引。不同表之间的引用通常通过索引来完成。你可以使用EXPLAIN语句来确定SELECT语句使用哪些索引。

下面是一些加速对MyISAM表的查询的一般建议:

  •     为了帮助MySQL更好地优化查询,在一个装载数据后的表上运行ANALYZE TABLE或myisamchk --analyze。这样为每一个索引更新指出有相同值的行的平均行数的值(当然,如果只有一个索引,这总是1。)MySQL使用该方法来决定当你联接两个基于非常量表达式的表时选择哪个索引。你可以使用SHOW INDEX FROM tbl_name并检查Cardinality值来检查表分析结果。myisamchk --description --verbose可以显示索引分布信息。
    
  •     要想根据一个索引排序一个索引和数据,使用myisamchk --sort-index --sort-records=1(如果你想要在索引1上排序)。如果只有一个索引,想要根据该索引的次序读取所有的记录,这是使查询更快的一个好方法。但是请注意,第一次对一个大表按照这种方法排序时将花很长时间!

相关文章

  • 15 估计查询性能和SELECT查询的速度

    估计查询性能 在大多数情况下,可以通过计算磁盘搜索来估计性能。对小的表,通常能在1次磁盘搜索中找到行(因为索引可能...

  • 面试总结

    1.Java编程 2. Mysql添加索引后查询速度没有变化 mysql查询语句的where条件字段和select...

  • MySQL优化

    MySQL优化 1. 避免使用 select * 你需要什么信息,就查询什么信息,查询的多了,查询的速度肯定就...

  • ClickHouse性能提升 -- SQL使用规范

    不要用select * 反例: 正例: 理由:只查询需要的字段可以减少磁盘io和网络io,提升查询性能 不要在大结...

  • 子查询

    出现在select语句中的select语句,称为子查询或内查询 外部的select查询语句,称为主查询或外查询 子...

  • MYSQL 初级入门 (SELECT 查询)

    SELECT 查询 1.整表查询 SELECT [查询内容] FROM [查询的表名] ; 2.条件查询 SELE...

  • SQL日常用法—查询

    SQL—查询的基本用法—查 select这个是查询和其他语法的起点 1、查询表中的全部内容:语法:select *...

  • 延迟加载

    意义 在进行数据查询时,为了提高数据库查询性能,尽量使用单表查询,因为单表查询比多表关联查询速度要快。 如果查询单...

  • mysql中explain中各个字段介绍

    select_type :对应查询复杂,simple是简单查询,不包含子查询和union查询。复杂查询不怎么用到,...

  • SQL学习笔记

    整体的SQL学习笔记,之后再分开来详细写。 查询 SELECT Select查询某些属性列的语法 Select查询...

网友评论

    本文标题:15 估计查询性能和SELECT查询的速度

    本文链接:https://www.haomeiwen.com/subject/ezggzttx.html