金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 数据库 > webform设计思路的思考,查询各分类中最大自增

webform设计思路的思考,查询各分类中最大自增

发布时间:2019-10-28 22:04编辑:数据库浏览(55)

    假如现在有表结构:

    MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,该文主要讲解explain命令的使用及相关参数说明。

         我使用asp.net的webform框架进行web应用程序的开发已经差不多四年了,在整个开发生涯中,也使用过一年asp.net的mvc框架。因为网上经常有讨论webform框架和mvc框架的优劣,所以自己也对这两者进行了关注,因为自己最熟悉webform框架,所以就会考虑它的优势是什么?设计思路是什么?

    CREATE TABLE `msg_detail` (
        `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
        `title` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '标题',
        `content` TEXT NOT NULL COMMENT '内容',
        `audio_url` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '音频地址',
        `type_id` TINYINT(4) NOT NULL DEFAULT '0',
         PRIMARY KEY (`id`),
        INDEX `cid` (`cid`) USING BTREE,
        INDEX `column_id` (`column_id`) USING BTREE
    )
    COMMENT='内参表'
    COLLATE='utf8_general_ci'
    ENGINE=InnoDB
    AUTO_INCREMENT=1;
    

    EXPLAIN Output Columns

    列名 说明
    id 执行编号,标识select所属的行。如果在语句中没子查询或关联查询,只有唯一的select,每行都将显示1。否则,内层的select语句一般会顺序编号,对应于其在原始语句中的位置
    select_type 显示本行是简单或复杂select。如果查询有任何复杂的子查询,则最外层标记为PRIMARY(DERIVED、UNION、UNION RESUlT)
    table 访问引用哪个表(引用某个查询,如“derived3”)
    type 数据访问/读取操作类型(ALL、index、range、ref、eq_ref、const/system、NULL)
    possible_keys 揭示哪一些索引可能有利于高效的查找
    key 显示mysql决定采用哪个索引来优化查询
    key_len 显示mysql在索引里使用的字节数
    ref 显示了之前的表在key列记录的索引中查找值所用的列或常量
    rows 为了找到所需的行而需要读取的行数,估算值,不精确。通过把所有rows列值相乘,可粗略估算整个查询会检查的行数
    Extra 额外信息,如using index、filesort等

        要理解asp.net的设计思路,必须考虑它的产生年代,产生的技术基础,还有观察同时代其他动态网页技术的特点和思路。

     

    id

    id是用来顺序标识整个查询中SELELCT 语句的,在嵌套查询中id越大的语句越先执行。该值可能为NULL,如果这一行用来说明的是其他行的联合结果。

       首先是产生asp.net的技术基础,以下援引百度百科:

      查询所有类型内参最大id,可用如下sql: 

    select_type

    表示查询的类型

    类型 说明
    simple 简单子查询,不包含子查询和union
    primary 包含union或者子查询,最外层的部分标记为primary
    subquery 一般子查询中的子查询被标记为subquery,也就是位于select列表中的查询
    derived 派生表——该临时表是从子查询派生出来的,位于form中的子查询
    union 位于union中第二个及其以后的子查询被标记为union,第一个就被标记为primary如果是union位于from中则标记为derived
    union result 用来从匿名临时表里检索结果的select被标记为union result
    dependent union 顾名思义,首先需要满足UNION的条件,及UNION中第二个以及后面的SELECT语句,同时该语句依赖外部的查询
    subquery 子查询中第一个SELECT语句
    dependent subquery 和DEPENDENT UNION相对UNION一样

    *   “1996年,ASP 1.0(Active Server Pages)版本出现了,它引起了Web开发的新革命,降低了动态网页开发的难度。以前开发动态网页需要编写大量繁杂的C代码,编程效率非常低下,而且需要Web网页开发者掌握非常高的编程技巧。而ASP使用简单的脚本语言,能够将代码直接嵌入HTML,使设计Web页面变得更简单。虽然ASP非常简单,但却能够实现非常强大的功能,这一切得益于其组件。特别是ADO组件,使得在网页中访问数据库易如反掌。这一切推动了动态网页的快速发展与建设,同时使ASP得到迅速流行。*

     select max(id),type_id from msg_detail group by type_id; 

    table

    对应行正在访问哪一个表,表名或者别名

    • 关联优化器会为查询选择关联顺序,左侧深度优先
    • 当from中有子查询的时候,表名是derivedN的形式,N指向子查询,也就是explain结果中的下一列
    • 当有union result的时候,表名是union 1,2等的形式,1,2表示参与union的query id

    注意:MySQL对待这些表和普通表一样,但是这些“临时表”是没有任何索引的。

    *    1998年,微软公司发布了ASP 2.0,它是作为Windows NT 4 Option Pack的一部分提供的。ASP 2.0与ASP 1.0的主要区别是外部的组件可以初始化,使所有的组件都有了独立的内存空间,并且可以进行事务处理。内置的Microsoft Transaction Server(MTS)使制作组件变得更容易。*

     

    type

    type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
    system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL ,一般来说,得保证查询至少达到range级别,最好能达到ref。

    类型 说明
    All 最坏的情况,全表扫描
    index 和全表扫描一样。只是扫描表的时候按照索引次序进行而不是行。主要优点就是避免了排序, 但是开销仍然非常大。如在Extra列看到Using index,说明正在使用覆盖索引,只扫描索引的数据,它比按索引次序全表扫描的开销要小很多
    range 范围扫描,一个有限制的索引扫描。key 列显示使用了哪个索引。当使用=、 <>、>、>=、<、<=、IS NULL、<=>、BETWEEN 或者 IN 操作符,用常量比较关键字列时,可以使用 range
    ref 一种索引访问,它返回所有匹配某个单个值的行。此类索引访问只有当使用非唯一性索引或唯一性索引非唯一性前缀时才会发生。这个类型跟eq_ref不同的是,它用在关联操作只使用了索引的最左前缀,或者索引不是UNIQUE和PRIMARY KEY。ref可以用于使用=或<=>操作符的带索引的列。
    eq_ref 最多只返回一条符合条件的记录。使用唯一性索引或主键查找时会发生 (高效)
    const 当确定最多只会有一行匹配的时候,MySQL优化器会在查询前读取它而且只读取一次,因此非常快。当主键放入where子句时,mysql把这个查询转为一个常量(高效)
    system 这是const连接类型的一种特例,表仅有一行满足条件。
    Null 意味说mysql能在优化阶段分解查询语句,在执行阶段甚至用不到访问表或索引(高效)

    *    2000年6月,微软公司宣布了自己的.NET框架。.NET框架的基本思想是:把原有的重点从连接到互联网的单一网站或设备转移到计算机、设备和服务群组上,而将互联网本身作为新一代操作系统的基础。这样,用户将能够控制信息的传送方式、时间和内容,从而得到更多的服务。*

    possible_keys

    显示查询使用了哪些索引,表示该索引可以进行高效地查找,但是列出来的索引对于后续优化过程可能是没有用的

    *    2001年,ASP.NET浮出水面。它最初的名字为ASP+,后来改为ASP.NET。ASP.NET是微软公司开发的一种建立在.NET之上的Web运行环境,它不是ASP的简单升级,而是新一代的Active Server Pages。ASP.NET是微软公司新体系结构Microsoft.NET的一部分,其中全新的技术架构使编程变得更加简单。借助于ASP.NET,可以创造出内容丰富的、动态的、个性化的Web站点。ASP.NET简单易学、功能强大、应用灵活、扩展性好,可以使用任何.NET兼容语言。 [4-5] *

    key

    key列显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

    *    2002年微软发布.NET正式版本.NET Framework 1.0,其中的ASP版本就是ASP.NET 1.0,在此以前发布了两个.NET测试版本Betal和Beta2。*

    key_len

    key_len列显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好 。

    *    2003年微软发布了.NET Frameworrk 1.1正式版,其中ASP版本就是ASP.NET 1.1。*

    ref

    ref列显示使用哪个列或常数与key一起从表中选择行。

    *    2005年微软发布.NET Framework 2.0正式版本,也就是ASP.NET 2.0。*”

    rows

    rows列显示MySQL认为它执行查询时必须检查的行数。注意这是一个预估值。

     

    Extra

    Extra是EXPLAIN输出中另外一个很重要的列,该列显示MySQL在查询过程中的一些详细信息,MySQL查询优化器执行查询的过程中对查询计划的重要补充信息。

    类型 说明
    Using filesort MySQL有两种方式可以生成有序的结果,通过排序操作或者使用索引,当Extra中出现了Using filesort 说明MySQL使用了后者,但注意虽然叫filesort但并不是说明就是用了文件来进行排序,只要可能排序都是在内存里完成的。大部分情况下利用索引排序更快,所以一般这时也要考虑优化查询了。使用文件完成排序操作,这是可能是ordery by,group by语句的结果,这可能是一个CPU密集型的过程,可以通过选择合适的索引来改进性能,用索引来为查询结果排序。
    Using temporary 用临时表保存中间结果,常用于GROUP BY 和 ORDER BY操作中,一般看到它说明查询需要优化了,就算避免不了临时表的使用也要尽量避免硬盘临时表的使用。
    Not exists MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行, 就不再搜索了。
    Using index 说明查询是覆盖了索引的,不需要读取数据文件,从索引树(索引文件)中即可获得信息。如果同时出现using where,表明索引被用来执行索引键值的查找,没有using where,表明索引用来读取数据而非执行查找动作。这是MySQL服务层完成的,但无需再回表查询记录。
    Using index condition 这是MySQL 5.6出来的新特性,叫做“索引条件推送”。简单说一点就是MySQL原来在索引上是不能执行如like这样的操作的,但是现在可以了,这样减少了不必要的IO操作,但是只能用在二级索引上。
    Using where 使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。注意:Extra列出现Using where表示MySQL服务器将存储引擎返回服务层以后再应用WHERE条件过滤。
    Using join buffer 使用了连接缓存:Block Nested Loop,连接算法是块嵌套循环连接;Batched Key Access,连接算法是批量索引连接
    impossible where where子句的值总是false,不能用来获取任何元组
    select tables optimized away 在没有GROUP BY子句的情况下,基于索引优化MIN/MAX操作,或者对于MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化。
    distinct 优化distinct操作,在找到第一匹配的元组后即停止找同样值的动作

    作者:高广超
    链接:
    來源:简书
    版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

     

    小编积累多年的干货文档免费赠送,包含前端后端和测试,系统架构,高并发处理,优化等

    图片 1

     

        这是一段引自百度百科,介绍从asp发展到asp.net的记述。阅读这段记述你应该意识到,asp.net是从asp1.0开始发展来的,但是它不是直接从asp发展到asp.net的,首先是asp1.0,然后是asp2.0,然后是asp+,再然后改名为asp.net(这里如果分开看就是asp  、  .net这是两个词,因为在asp的发展过程中另一个大的项目.net出现了,.net为什么出现,不在讨论范围,可以自行百度)。asp.net1.1技术的web框架就是webform。

        虽然我没打算梳理叙述.net的产生和发展,但是asp.net webform的产生却和.net平台非常紧密。

        在asp产生的前两年,产生了另外一个非常有名的动态网页技术,那就是PHP。这里援引一下php的概念:

       “PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。”

    本文由金沙国际官网发布于数据库,转载请注明出处:webform设计思路的思考,查询各分类中最大自增

    关键词:

上一篇:MySQL版本详解,文件创建新实例

下一篇:没有了