精华内容
下载资源
问答
  • )) # 这里获取的是播放量的信息,用于初步筛选 list1 = [name_url['title'].replace(u'\xa0', u' '), number, name_url['href']] url_list.append(list1) except: continue ...
  • 将数据批量加载到索引表(通过批量加载完成索引)。 这个怎么运作 HBase 二级索引是带有协处理器的 100% 服务器端实现,协处理器将索引数据保存在单独的表中。 索引是区域明智的,自定义负载平衡器将索引表区域与...
  • 109-获取接口信息(一)

    千次阅读 2017-06-08 21:13:54
    1. 接口的其他信息 上一篇文章简要的介绍了...说了这么多,那要怎么才能获取到这些信息呢?有一个类似 fcntl 的函数,叫 ioctl,也是一个垃圾桶函数,通过不同命令来完成不同的功能。它的函数原型如下: #include

    1. 接口的其他信息

    上一篇文章简要的介绍了接口的名字和索引号的概念,我们也可以通过一些函数去获取、转换它们。可是,接口除了这些信息外,还有很多其它信息,比如接口上配置的 ip 地址啊,子网掩码啦,MTU 等等。

    说了这么多,那要怎么才能获取到这些信息呢?有一个类似 fcntl 的函数,叫 ioctl,也是一个垃圾桶函数,通过不同命令来完成不同的功能。它的函数原型如下:

    #include <unistd.h>
    int ioctl(int fd, int request, ... /* void *arg */);

    ioctl 不仅能操作接口,也能操作套接字,文件等等。它的命令非常非常多,根本数不过来,我们只能遇到一个学一个。

    2. 获取所有接口信息

    命令 SIOCGIFCONF,这个命令的意思是,Socket IOCtl Get InterFace Config,意思是用来获取接口配置。接口配置的数据类型是这样的(man netdevice):

    struct ifconf {
        int                 ifc_len; /* 第二个成员的大小,value-result 参数 */
        union {
            char           *ifc_buf; /* buffer address */
            struct ifreq   *ifc_req; /* array of structures */
        };
    };

    第一个成员是一个 value-result 参数,你需要手工传递缓冲区大小给它。当 ioctl 函数返回时,也会修改这个成员,表示实际获取的数据长度。

    第二个成员是一个联合体,我们比较关注的是 struct ifreq 这个类型,它样子如下:

    struct ifreq {
        char ifr_name[IFNAMSIZ]; /* 接口名字,大小为 16 */
        union {
            struct sockaddr ifr_addr; // 接口配置的 IP 地址
            struct sockaddr ifr_dstaddr; // P2P 中对端地址
            struct sockaddr ifr_broadaddr; // 广播地址
            struct sockaddr ifr_netmask; // 子网掩码
            struct sockaddr ifr_hwaddr; // MAC 地址
            short           ifr_flags; // 标志位,用来指示网卡的功能
            int             ifr_ifindex; // 接口索引号
            int             ifr_metric; // 度量距离
            int             ifr_mtu; // MTU
            struct ifmap    ifr_map; // 接口硬件参数,后面的都不用管了
            char            ifr_slave[IFNAMSIZ]; 
            char            ifr_newname[IFNAMSIZ];
            char           *ifr_data;
        };
    };

    需要特别注意的是,struct ifreq 的第二个成员也是一个联合体。那么使用 ioctl 的 SIOCGIFCONF 获取的值,到底是该联合体中的哪个含义?

    答:SIOCGIFCONF 获取的是接口配置的 IP 地址,即 ifr_addr.

    这样一来,工作就简单多了,我们甚至可以把 struct ifreq 简化为:

    struct ifreq {
        char ifr_name[IFNAMSIZ]; /* 接口名字,大小为 16 */
        struct sockaddr ifr_addr; // 接口配置的 IP 地址
    };

    说了这么多,来个例子实践一下。

    3. 实例

    通过 SIOCGIFCONF 命令获取所有接口配置。

    • 伪代码前半部分——获取接口配置
    int sockfd;
    char buf[4096];
    struct ifconf ifc;
    
    ifc.ifc_len = 4096;
    ifc.ifc_buf = buf;
    
    // 因为 ioctl 第一个参数是描述符,没办法,必须得传一个
    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    // 获取接口配置
    ioctl(sockfd, SIOCGIFCONF, &ifc);
    
    // 之前我们说过,SIOCGIFCONF 是获取所有接口的配置,也就是说 ifconf 的第二个成员保存了所有的接口配置信息,是如何存储的?我们该如何遍历呢?

    上面的程序写到一半,你拿到了 ifconf 的结果,但是你只知道 ifconf 的总长度,却不知道里面保存多少个接口的配置信息。看图 1,你就很容易明白,应该如何却遍历这里面的数据了。


    这里写图片描述
    图1

    接着,我们尝试去遍历 ifconf 里的 ifreq 结构体,打印接口名字和配置的 IP 地址。

    • 伪代码后半部分——遍历
    // 计算ifreq 的个数
    int count = ifc.ifc_len / sizeof(struct ifreq);
    struct ifreq *ifr = ifc.ifc_buf;
    for (int i = 0; i < count; ++i) {
      printf("name = %s, ", ifr[i].ifr_name);
      printf("addr = %s\n", inet_ntoa(ifr[i].ifr_addr);
    }

    4. 实验

    代码托管在:http://git.oschina.net/ivan_allen/unp
    本文程序路径:unp/program/interface/ifconf


    这里写图片描述
    图2 运行结果

    5. 总结

    • 掌握 struct ifconf 和 struct ifreq 结构体
    • 使用 ioctl 获取所有接口的配置

    思考:在第 3 小节的实例中,使用了大小固定为 4096 的接收缓冲。如果使用 ioctl 获取数据,数据量非常有可能超过 4096,这时不就导致数据被截断了吗?你能解决这个问题吗?

    注意:在 Linux 中,ioctl 数据被截断并不会返回错误,它什么都不会告诉你。
    提示:在unp/program/util/common.cc 中,我将 ioctl 函数封装到了 getIfConf 中,你可以查看该函数的实现。

    最后,到这里我们只学会了获取接口的名字和接口上配置的 IP,接口的子网掩码,MAC 地址等等这些我们都还不知道怎么获取,实际上也很简单,使用 ioctl 的其它命令就行,具体你可以使用 man netdevice 查看到,里头有非常非常多的命令让你去操作接口。不过在下一篇中,会介绍这些常用的接口操作命令。

    展开全文
  • 网站导航怎么设置利于网站SEO优化

    千次阅读 2019-07-02 09:40:44
    网站导航的最终目的就是帮助用户找到他们需要的信息,如果说得详细点,那么可以概括为下面3个用处: 引导用户完成网站各内容页面间的跳转。这个是最常见的,全局导航、局部导航和辅助导航等都是为了引导用户浏览...

    网站导航是什么

    网站导航是对引导用户访问网站的栏目、菜单、在线帮助、布局结构等形式的统称。

    网站导航

    网站导航的作用:

    网站导航的最终目的就是帮助用户找到他们需要的信息,如果说得详细点,那么可以概括为下面3个用处:

    1. 引导用户完成网站各内容页面间的跳转。这个是最常见的,全局导航、局部导航和辅助导航等都是为了引导用户浏览相关的页面。

    2. 理清网站各内容与链接间的联系。即对网站整理内容的一个索引和理解,这个最常见的应用就是网站地图和内容索引表,展现了整个网站的目录信息,帮助用户快速找到相应的内容。

    3. 定位用户在网站中所处的位置。这个在面包屑导航中得到了充分的体现,它帮助用户识别当前浏览的页面与网站整体内容间关系,及其与网站中其它内容的联系和区分。

    网站导航怎么优化更符合网站SEO优化

    1.主导航栏目结构和名称要清晰

    主导航栏目是导航系统最重要的一块,通常来说主导航目录均为网站的一级目录,所以为了让网站扁平化,减少链接层次,利用好主导航目录层次优势规划内容非常有必要。

    首先导航内页和首页点击距离的控制问题,要减少链接的层次,一般不要超过四五次。其次对导航进行设置的时候尽量使用最普通的HTML就可以,所以的导航基本都是如此,导航中不要把图片作为导航链接,也不要用FLASH,JavaScript生成的导航系统也不要使用,之前就说过,对于搜索引擎来说这就是蜘蛛陷阱,同时增加了网页加载时间。

    2.网站导航包含关键词

    导航系统中的链接通常是分类页面获得内部链接的最主要来源,数量很大。所以在选择导航链接关键词时要注意分类名称尽量使用目标关键词的长尾词。但是很多时候在选择导航关键词时要顾及用户的体验,所以在很多情况下没有直接用栏目页关键词,这个时候就要注意导航文字与目标页面有相关性。比如你的导航名称是成功案例,点进入是最新产品肯定就不对了。

    同时导航中不要堆积关键词,很多站长喜欢在导航堆砌关键词,这既不利于用户体验,搜索引擎也会察觉,不要刻意在导航每个位置都加入目标关键词或者在导航的链接标签中堆入关键词。

    3.网站导航关键词的位置

    网站导航关键词一般是在以从左到右,从上到下的重要性依次降低的趋势进行分布,这样不管是对于用户的浏览习惯还是搜索引擎的权重分配都是有利的,另外避免用一些没有实际作用的栏目。

    4.面包屑导航和子导航的设置

    面包屑导航对用户和搜索引擎来说,是判断页面在网站整个结构中的位置的最好方法。前面说过网站导航作用就是要让用户不至于在网站中迷失,而面包屑导航就是给用户指路的最好方法,正确使用面包屑导航的网站通常都是架构比较清晰的网站,这样很有利于提升网站的用户体验和蜘蛛的抓取。而子导航的设置也是同样的道理,让网站结构更加清晰,特别是对一些大型网站,子导航的设置大量减少了网站的层次,有利于网站收录,更有利于缩短用户的点击次数。

    5.避免页脚堆积

    很多时候网站底部也会做一个网站导航,这样方面用于浏览的底部也会有导航系统,同时对于搜索引擎也友好,但是很多站长喜欢在底部导航进行大。

    量的关键词堆砌,甚至用黑帽的方法在底部放入很多的关键词,搜索引擎对此比较反感,常常会造成某种形式的惩罚。

    6.网站地图设置

    网站地图也是一种很重要的网站导航系统,也是现在很多网站正在用的,在进行SEO诊断的时候也经常会去考察网站地图,网站地图一般分成xml和html二种,XML是给搜索引擎看的,可以直接生成放在网页底部或是在站长工具进行提交,而HTML这种是做给用户看的,主要是把网站主要内容作一个综合方便用户浏览,这样的需要自己设计。

    还有对网站SEO优化比较重要的导航:面包屑导航

    面包屑导航(或称为面包屑路径)是一种显示用户在网站或网络应用中的位置的一层层指引的导航。面包屑导航最初自于神话故事《奇幻森林历险记》,故事的两个小主人公丢下一条面包屑路径,然后顺着这条路径回到了家中。就像这个故事一样,在互联网中,面包屑为用户提供一种追踪返回最初访问页面的方式,可以清晰的为客户指引进入网站内部也和首页之间的路线。最简化的方式是,面包屑就是水平排列的被大于号">"隔开的文本链接;这个符号指示该页面相对于链接到它的页面的深度(级别)。

    面包屑导航对网站SEO优化的作用

    1、方便用户,面包屑主要用于为用户提供导航一个网站的次要方法,通过为一个大型多级网站的所有页面提供面包屑路径,用户可以更容易的定位到上一次目录,引导用户通行。

    2、减少返回到上一级页面的点击或操作,不用使用浏览器的“返回”按钮或网站的主要导航来返回到上一级页面。

    3、不用常常占用屏幕空间,因为它们通常是水平排列以及简单的样式,面包屑路径不会占用页面太多的空间。这样的好处是,从内容过载方面来说,他们几乎没有任何负面影响。

    4、降低跳出率,面包屑路径会是一个诱惑首次访问者在进入一个页面后去浏览这个网站的非常好的方法。比如说,一个用户通过谷歌搜索到一个页面,然后看到一个面包屑路径,这将会诱使用户点击上一级页面去浏览感兴趣的相关主题。这样,从而,可以降低网站的总体跳出率。

    5、有利用百度蜘蛛对网站的抓取,蜘蛛直接沿着那个链走就可以了,很方便;

    6、面包屑有利于网站内链的建设,用面包屑大大增加了网站的内部连接,提高用户体验。

    本文源自:http://www.qzgi.cn/archives/2449

    展开全文
  • <div><p>W: 仓库 ...正在读取状态信息... 完成 E: 无法定位软件包 libpcl-all 我是菜鸟,还请大家指导一下。。。</p><p>该提问来源于开源项目:gaoxiang12/slambook</p></div>
  • XHttp2 一个功能强悍的网络请求库,使用RxJava2 + Retrofit2 + OKHttp组合进行封装。... 在提issue前,请先阅读【提问的智慧】,并严格按照issue模板进行填写,节约大家的时间。...作为缓存key的请求参数索引 2....
  • lysecondindex-源码

    2021-05-09 14:30:15
    将数据批量加载到索引表(通过批量加载完成索引)。 这个怎么运作 HBase Secondary Index是具有协处理器的100%服务器端实现,可将索引数据保存在单独的表中。 索引是按区域划分的,并且自定义负载平衡器将索引表...
  • resolve 异步加载完成后回调 lazy: true, load: function (node, resolve) { setTimeout(() => { resolve([{ id: id++, name: '新叶子节点' + id, isLeaf: true }]) }, 1000) } format 目前仅支持,id, ...
  • Explain在mysql使用技巧

    2021-04-15 15:06:50
    但是有时候,我们加了索引还是觉得SQL查询效率低下,我想看看有没有使用到索引,扫描了多少行,表的加载顺序等等,怎么查看呢?其实MySQL自带的SQL分析神器Explain执行计划就能完成以上的事情! Explain有哪些信息 ...

    前言

    在MySQL中,我们知道加索引能提高查询效率,这基本上算是常识了。但是有时候,我们加了索引还是觉得SQL查询效率低下,我想看看有没有使用到索引,扫描了多少行,表的加载顺序等等,怎么查看呢?其实MySQL自带的SQL分析神器Explain执行计划就能完成以上的事情!

    Explain有哪些信息

    先确认一下试验的MySQL版本,这里使用的是5.7.31版本。

    只需要在SQL语句前加上explain关键字就可以查看执行计划,执行计划包括以下信息:id、select_type、table、partitions、type、possible_keys、key、key_len、ref、rows、filtered、Extra,总共12个字段信息。

    然后创建三个表:

    CREATE TABLE `tb_student` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `name` varchar(36) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `index_name` (`name`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='学生表';
    
    CREATE TABLE `tb_class` (
      `id` INT(10) primary key not null auto_increment,
      `name` VARCHAR(36) NOT NULL,
    	`stu_id` INT(10) NOT NULL,
    	`tea_id` INT(10) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级表';
    
    CREATE TABLE `tb_teacher` (
      `id` INT(10) primary key not null auto_increment,
      `name` VARCHAR(36) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师表';
    

    Explain执行计划详解

    explain的使用很简单,只需要在SQL语句前加上关键字explain即可,关键是怎么看explain执行后返回的字段信息,这才是重点。

    一、id

    SELECT识别符。这是SELECT的查询序列号。SQL执行的顺序的标识,SQL从大到小的执行。id列有以下几个注意点:

    • id相同时,执行顺序由上至下。
    • id不同时,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行。
    EXPLAIN SELECT * FROM `tb_student` WHERE id IN (SELECT stu_id FROM tb_class WHERE tea_id IN(SELECT id FROM tb_teacher WHERE `name` = '马老师'));
    

    根据原则,当id不同时,SQL从大到小执行,id相同则从上到下执行。

    二、select_type

    表示select查询的类型,用于区分各种复杂的查询,例如普通查询,联合查询,子查询等等。

    SIMPLE

    表示最简单的查询操作,也就是查询SQL语句中没有子查询、union等操作。

    PRIMARY

    当查询语句中包含复杂查询的子部分,表示复杂查询中最外层的 select。

    SUBQUERY

    当 select 或 where 中包含有子查询,该子查询被标记为SUBQUERY。

    DERIVED

    在SQL语句中包含在from子句中的子查询。

    UNION

    表示在union中的第二个和随后的select语句。

    UNION RESULT

    代表从union的临时表中读取数据。

    EXPLAIN SELECT u.`name` FROM ((SELECT s.id,s.`name` FROM `tb_student` s) UNION (SELECT t.id,t.`name` FROM tb_teacher t)) AS u;
    

    <union2,3>代表是id为2和3的select查询的结果进行union操作。

    MATERIALIZED

    MATERIALIZED表示物化子查询,子查询来自视图。

    三、table

    表示输出结果集的表的表名,并不一定是真实存在的表,也有可能是别名,临时表等等。

    四、partitions

    表示SQL语句查询时匹配到的分区信息,对于非分区表值为NULL,当查询的是分区表则会显示分区表命中的分区情况。

    五、type

    需要重点关注的一个字段信息,表示查询使用了哪种类型,在 SQL优化中是一个非常重要的指标,依次从优到差分别是:system > const > eq_ref > ref > range > index > ALL

    system和const

    单表中最多有一条匹配行,查询效率最高,所以这个匹配行的其他列的值可以被优化器在当前查询中当作常量来处理。通常出现在根据主键或者唯一索引进行的查询,system是const的特例,表里只有一条元组匹配时(系统表)为system。

    eq_ref

    primary key 或 unique key 索引的所有部分被连接使用 ,最多只会返回一条符合条件的记录,所以这种类型常出现在多表的join查询。

    ref

    相比eq_ref,不使用唯一索引,而是使用普通索引或者唯一性索引的部分前缀,可能会找到多个符合条件的行。

    range

    使用索引选择行,仅检索给定范围内的行。一般来说是针对一个有索引的字段,给定范围检索数据,通常出现在where语句中使用 bettween...and<><=in 等条件查询 。

    index

    扫描全表索引,通常比ALL要快一些。

    ALL

    全表扫描,MySQL遍历全表来找到匹配行,性能最差。

    六、possible_keys

    表示在查询中可能使用到的索引来查找,别列出的索引并不一定是最终查询数据所用到的索引。

    七、key

    跟possible_keys有所区别,key表示查询中实际使用到的索引,若没有使用到索引则显示为NULL。

    八、key_len

    表示查询用到的索引key的长度(字节数)。如果单列索引,那么就会把整个索引长度计算进去,如果是联合索引,不是所有的列都用到,那么就只计算实际用到的列,因此可以根据key_len来判断联合索引是否生效

    九、ref

    显示了哪些列或常量被用于查找索引列上的值。常见的值有:constfuncnull,字段名。

    十、rows

    mysql估算要找到我们所需的记录,需要读取的行数。可以通过这个数据很直观的显示 SQL 性能的好坏,一般情况下 rows 值越小越好。

    十一、filtered

    指返回结果的行占需要读到的行(rows列的值)的百分比,一般来说越大越好。

    十二、Extra

    表示额外的信息。此字段能够给出让我们深入理解执行计划进一步的细节信息。

    Using index

    说明在select查询中使用了覆盖索引。覆盖索引的好处是一条SQL通过索引就可以返回我们需要的数据。

    Using where

    查询时没使用到索引,然后通过where条件过滤获取到所需的数据。

    Using temporary

    表示在查询时,MySQL需要创建一个临时表来保存结果。临时表一般会比较影响性能,应该尽量避免。

    有时候使用DISTINCT去重时也会产生Using temporary。

    Using filesort

    我们知道索引除了查询中能起作用外,排序也是能起到作用的,所以当SQL中包含 ORDER BY 操作,而且无法利用索引完成排序操作的时候,MySQL不得不选择相应的排序算法来实现,这时就会出现Using filesort,应该尽量避免使用Using filesort

    总结

    一般优化SQL语句第一步是要知道这条SQL语句有哪些需要优化的,explain执行计划就相当于一面镜子,能把详细的执行情况给开发者列出来。所以说善用explain执行计划,能解决80%的SQL优化问题。

    explain的信息中,一般我们要关心的是type,看是什么级别,如果是在互联网公司一般需要在range以上的级别,接着关心的是Extra,有没有出现filesort或者using template,一旦出现就要想办法避免,接着再看key使用的是什么索引,还有看filtered筛选比是多少。

    这篇文章就讲到这里了,希望大家看完之后能对SQL优化有更深入的理解,感谢大家的阅读。

    觉得有用就点个赞吧,你的点赞是我创作的最大动力~

    我是一个努力让大家记住的程序员。我们下期再见!!!

    展开全文
  • 在MySQL中,我们知道加索引能提高查询效率,但是有时候,我们加了索引依然觉得SQL查询效率低下,想看看有没有使用到索引,扫描了多少行,表的加载顺序等等,怎么查看呢?其实MySQL自带的SQL分析神器Explain执行计划...

    在MySQL中,我们知道加索引能提高查询效率,但是有时候,我们加了索引依然觉得SQL查询效率低下,想看看有没有使用到索引,扫描了多少行,表的加载顺序等等,怎么查看呢?

    其实MySQL自带的SQL分析神器Explain执行计划就能完成以上的事情!

    使用方法也很简单,只需要在SQL语句前加上explain关键字就可以查看执行计划即可。

    执行计划包括以下信息:id、select_type、table、partitions、type、possible_keys、key、key_len、ref、rows、filtered、Extra,总共12个字段信息。

     执行计划详解

    一、id

    SELECT识别符。这是SELECT的查询序列号。SQL执行的顺序的标识,SQL从大到小的执行。id列有以下几个注意点:

    • id相同时,执行顺序由上至下。
    • id不同时,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行。

     

    根据原则,当id不同时,SQL从大到小执行,id相同则从上到下执行。

    二、select_type

    表示select查询的类型,用于区分各种复杂的查询,例如普通查询,联合查询,子查询等等。

    SIMPLE

    表示最简单的查询操作,也就是查询SQL语句中没有子查询、union等操作。

    PRIMARY

    当查询语句中包含复杂查询的子部分,表示复杂查询中最外层的 select。

    SUBQUERY

    当 select 或 where 中包含有子查询,该子查询被标记为SUBQUERY。

    DERIVED

    在SQL语句中包含在from子句中的子查询。

    UNION

    表示在union中的第二个和随后的select语句。

    UNION RESULT

    代表从union的临时表中读取数据。

    <union2,3>代表是id为2和3的select查询的结果进行union操作。

    MATERIALIZED

    MATERIALIZED表示物化子查询,子查询来自视图。

    三、table

    表示输出结果集的表的表名,并不一定是真实存在的表,也有可能是别名,临时表等等。

    四、partitions

    表示SQL语句查询时匹配到的分区信息,对于非分区表值为NULL,当查询的是分区表则会显示分区表命中的分区情况。

    五、type

    需要重点关注的一个字段信息,表示查询使用了哪种类型,在 SQL优化中是一个非常重要的指标,依次从优到差分别是:system > const > eq_ref > ref > range > index > ALL

    system和const

    单表中最多有一条匹配行,查询效率最高,所以这个匹配行的其他列的值可以被优化器在当前查询中当作常量来处理。通常出现在根据主键或者唯一索引进行的查询,system是const的特例,表里只有一条元组匹配时(系统表)为system。

    eq_ref

    primary key 或 unique key 索引的所有部分被连接使用 ,最多只会返回一条符合条件的记录,所以这种类型常出现在多表的join查询。

    ref

    相比eq_ref,不使用唯一索引,而是使用普通索引或者唯一性索引的部分前缀,可能会找到多个符合条件的行。

    range

    使用索引选择行,仅检索给定范围内的行。一般来说是针对一个有索引的字段,给定范围检索数据,通常出现在where语句中使用 bettween...and<><=in 等条件查询 。

    index

    扫描全表索引,通常比ALL要快一些。

    ALL

    全表扫描,MySQL遍历全表来找到匹配行,性能最差。

    六、possible_keys

    表示在查询中可能使用到的索引来查找,别列出的索引并不一定是最终查询数据所用到的索引。

    七、key

    跟possible_keys有所区别,key表示查询中实际使用到的索引,若没有使用到索引则显示为NULL。

    八、key_len

    表示查询用到的索引key的长度(字节数)。如果单列索引,那么就会把整个索引长度计算进去,如果是联合索引,不是所有的列都用到,那么就只计算实际用到的列,因此可以根据key_len来判断联合索引是否生效

    九、ref

    显示了哪些列或常量被用于查找索引列上的值。常见的值有:constfuncnull,字段名。

    十、rows

    mysql估算要找到我们所需的记录,需要读取的行数。可以通过这个数据很直观的显示 SQL 性能的好坏,一般情况下 rows 值越小越好。

    十一、filtered

    指返回结果的行占需要读到的行(rows列的值)的百分比,一般来说越大越好。

    十二、Extra

    表示额外的信息。此字段能够给出让我们深入理解执行计划进一步的细节信息。

    Using index

    说明在select查询中使用了覆盖索引。覆盖索引的好处是一条SQL通过索引就可以返回我们需要的数据。

    Using where

    查询时没使用到索引,然后通过where条件过滤获取到所需的数据。

     

    Using temporary

    表示在查询时,MySQL需要创建一个临时表来保存结果。临时表一般会比较影响性能,应该尽量避免。

    有时候使用DISTINCT去重时也会产生Using temporary。

    Using filesort

    我们知道索引除了查询中能起作用外,排序也是能起到作用的,所以当SQL中包含 ORDER BY 操作,而且无法利用索引完成排序操作的时候,MySQL不得不选择相应的排序算法来实现,这时就会出现Using filesort,应该尽量避免使用Using filesort

    总结

    一般优化SQL语句第一步是要知道这条SQL语句有哪些需要优化的,explain执行计划就相当于一面镜子,能把详细的执行情况给开发者列出来。所以说善用explain执行计划,能解决80%的SQL优化问题。

    explain的信息中,一般我们要关心的是type,看是什么级别,如果是在互联网公司一般需要在range以上的级别,接着关心的是Extra,有没有出现filesort或者using template,一旦出现就要想办法避免,接着再看key使用的是什么索引,还有看filtered筛选比是多少。

     

    展开全文
  • 关于SQL知识

    2021-04-20 17:37:47
    1.你怎么设计数据库? 设计数据库 • 在需求分析阶段,设计数据库的一般步骤为: – 收集信息 ​ 与该系统有关人员进行交流、坐谈,充分理解数据库需要完成的任务 – 标识对象 ​ 标识数据库要管理的关键对象或实体 ...
  • simHash

    2015-09-25 10:35:21
    simhash讲得很透彻,而且应用时候,怎么索引的方法也有介绍。 原文链接:http://grunt1223.iteye.com/blog/964564 在工作学习中,我往往感叹数学奇迹般的解决一些貌似不可能完成的任务,并且十分希望...
  • 微服务搜索功能

    2020-07-01 00:46:02
    1.搜索他是一个服务,它需要注册到服务...他怎么去操作索引库 在业务层的接口写个方法去实现,然后在实现类去完成操作 1.服务注册 2.依赖feign这个服务 3.实体类的格式要转成elasticsearch所以也要依赖他的包
  • oracle数据库的优化

    2014-10-08 07:46:38
    怎么优化oracle数据库 2013-08-14 19:39匿名|分类:...这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。 2、2、调整应用程序结构设计
  • oracle优化

    2012-04-24 21:43:47
    oracle数据库性能优化 2012-4-24 09:20阅读(2) 下一篇:老板不称职该怎么......这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。...
  • 适用于信息.检索、空间和OLAP程序。索引组织表的适用情况: a.代码查找表。 b.经常通过主码访问的表。 c.构建自己的索引结构。 d.加强数据的共同定位,要数据按特定顺序物理存储。 e.经常用between„and„对主码或...
  • dndMonsterIndex-源码

    2021-03-26 23:30:21
    我正在为我一生中的所有DM创建5e怪物索引。 请注意,该项目正在进行中。 这个怎么做的: 使用的技术: HTML,CSS,JavaScript,DnD API 想法是让用户输入怪物名称,然后API将有关怪物的所有信息提供给DOM。 最佳化...
  • ElasticSearch简介

    2019-04-04 20:38:49
    前言: 百事不决问百度,万事不决问...是怎么做到的呢,就是需要全文索引的技术来完成,我们知道可以查询的有数据库,但是数据库中的数据量一大就会变的非常的缓慢,而且都是模糊查询,数据量有非常的巨大,二者比较...
  • 可靠的Windows版Redis-教你怎么解决64位Windows版Redis狂占C盘的问题【完成】 Oracle中 SQL 执行太慢的元凶: OR【完成】 Windows下载安装JDK【废弃】 小伙伴书三生 2014年 点击展开书三生2014年目录 排斥...
  • 1.3.5 “怎么能让应用运行得更快?” 41 1.3.6 DBA与开发人员的关系 45 1.4 小结 46 第2章 体系结构概述 47 2.1 定义数据库和实例 48 2.2 SGA和后台进程 53 2.3 连接Oracle 56 2.3.1 专用服务器 56 2.3.2 ...
  • 完成了你的品牌新的应用程序,一切工作就像一个魅力。用户来使用你的网络。每个人是幸福的。 然后,突然间,一个大爆发的用户杀死你的MySQL服务器,您的网站已关闭。出了什么问题?你怎么能阻止它吗? 以下是MySQL...
  • 7.3.2 强制优化器为索引视图使用索引 210 7.4 分区视图 211 第8章 SQL Server函数 216 8.1 聚合函数 216 8.1.1 返回平均值 217 8.1.2 返回行总数 217 8.1.3 找出表达式中的最小值和最大值 218 8.1.4 ...
  • 基本信息 原书名: Expert Oracle Database Architecture: Oracle Database Programming 9i, 10g, and 11g Techniques and Solutions, Second Edition [ 原出版社: Apress 作者: (美)Thomas Kyte 译者: 苏金国 王...
  • 以前曾有很多用户说不懂CHM的基础知识,不懂什么主题、索引,因而仅管有CHM帮助编辑器,还是做不出满意的E书。现在可好解决了,只要您知道怎么用属标,你就能做出一部E书! 具体步骤如下:先运行一次程序注册快捷...
  • MYSQL培训经典教程.rar

    2009-11-16 21:37:03
    1.1 数据类型参考:怎么写字符串和数字 217 1.1.1 字符串 217 1.1.2 数字 219 1.1.3 十六进制值 219 1.1.4 NULL值 219 1.1.5 数据库、表、索引、列和别名的命名 220 1.1.5.1 名字的大小写敏感性 221 1.2 用户变量 ...
  • orcale常用命令

    2009-08-04 00:34:59
    当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 7、startup pfile=参数文件名 带初始化参数文件的启动方式 先读取参数文件,再按参数文件中的设置启动数据库...
  • 说明:该语句创建一个空的数据库,后面创建的表、视图、索引等数据字典信息均存放在该数据库下。 (2)数据库模式删除语句格式: drop schema <数据库名>; 说明:该语句删除一个数据库,包括数据库本身、属于该数据库...
  • 数据库课程设计(基于B/S)

    热门讨论 2008-12-28 15:28:06
    完成信息需求分析与数据库的概念设计、逻辑设计、物理设计以及处理功能设计,用SQL Sever的数据库管理系统、JSP开发工具实现该系统,并运行、评价、改进之;在此基础上严格按课程设计教学大纲所附报告提纲撰写课程...
  • 4.5.4 怎么打出线程栈信息。 开源框架 4.5.5 简单讲讲tomcat结构,以及其类加载器流程,线程模型等。 4.5.6 tomcat如何调优,涉及哪些参数 。 4.5.7 讲讲Spring加载流程。 4.5.8 Spring AOP的实现原理。 4.5.9...
  •  本书还提供了dba完成本职工作必备的基本的uniix、sql、pl/sql和数据建模的知识,也给出了许多富有趣味性的例子,通过这些实例详细、循序渐进地说明了oracle database 11g数据库的各个概念和特性。 作译者  Sam...

空空如也

空空如也

1 2 3 4 5
收藏数 91
精华内容 36
关键字:

怎么完成信息索引