datagridview怎么添加行_审计百万行数据指南(六):快速查询之道(索引)

其实我之前就是花了1天时间在W3school网站上把查询语句学了,力求快速上手使用,然后在第一篇文章提到的练习网站上做了3、4天的练习。压根就没有管什么添加索引的事。

说到索引,这就要提到我第一个真正处理百万行的审计项目,在这之前我有用sql处理10万行的数据,那个是要把两张表关联查询,你可以理解为用一个表vlookup另外一个表。足足反应了20分钟,我当时就放弃了用sql。跑去学习power pivot,十分轻松的处理掉了。

但是遇到这个百万行的数据的时候,我用excel power pivot仅仅是拉了个透视表,加了大概7、8个字段,我的内存就一直卡住不动。没办法,我又放弃了,转回来用Mysql。反正正好是周末,我就直接写了个两个表连结的查询语句,放在那等他出结果。

周一了早上起来,数据还是没有出来,我就这样把电脑抱到客户那里。一共花了大概20多个小时了,实在忍受不了。网上都说添加索引能优化查询,我就停止运行了,给两个表添加了索引,结果反应了18秒就出来了数据。

4145993292ca924db5f06a1de1e894c6.png

当时突然感觉兴奋死了,原来索引是这么用的。

我也能处理大的数据量了。

一、索引是什么

关于索引的运行原理,看了很多文章,感觉很复杂。但是我也只是运用而已,不需要掌握它真正的底层原理。

我就把它当成一个黑箱,来谈谈索引是什么?

比如我有现代汉语词典,假如我们要查询一个单词"牛",我们是怎么查的呢?

我们肯定是首先翻到前面的目录那里,找相对应的拼音,或者通过笔画找到这个字,看到这个字的页数,我们就根据这个页数查找到"牛"这个词的解释。

那么我们如果没有前面的目录呢?我们怎么查?最傻的方法是不是就是从第一页挨着挨着看是不是有"牛”这个字?这个过程是不是比前面直接找目录的方式慢了无数倍。

那么索引这东西就是我们这里的字典的目录。

二、怎么添加索引

索引有四种unique,primary key,fulltext,index

ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index)[索引名](字段名)

primary key ,unique都是对于不重复的字段设置,比如销售单号这个字段,没有两行数据是重复的,就可以用。primary key 一张表只能有一个,unique一张表可以多个。

举个例子,我要给“销售明细表”的“销售单号”那列加个主键:

alter table 销售明细表 primary key (销售单号);

如果给他加个unique索引就是:

alter table 销售明细表 unique (销售单号);

同样的,如果有重复的列比如我"发货明细表"里,有"订单号"这列,但是一个订单可能多次发货,那么我的订单号就是重复的。就需要用index索引:

alter table 发货明细表 index 索引号名称 (订单号);

这个索引号名称是你自己取的名字,比如你可以写一个index_order。

以上就是主要的索引的添加方法。如果你觉得内容还是太多,你就不管,全部用index这种索引就行,不会出错。

三、什么时候用索引

如果你是单表查询,其实没有索引也很快,对于两个表以上的时候你就需要添加索引了。

那么给哪个字段添加索引呢?

你在写查询语句的时候哪里用到了等号,哪个字段就添加索引。

比如

select 

A表和B表通过order这个字段连结起来有等号,我们就可以使用索引,他会大大提高查询速度。后面的money 也有等号,我们也可以给这个字段添加上。

四、删除索引

alter table 表名 drop index 索引名;
alter table 表名 drop primary key;
alter talbe 表名 drop unique ;

基本上就是前面添加的方法,只是把add换成了drop.

黑箱认识论

我们在对未知探索的时候很难了解到真正的底层原理,它对于我们来说只是一个黑箱。我们做的就是通过观察黑箱的输入信息,输出信息,来验证我们的认知。

65aab224bae927514064e8251477c528.png

这个索引我就是不了解它真正的底层逻辑,但是不妨碍我对它的理解和使用,我只是用它的功能。比如你每天用计算器,但是里面的芯片你懂吗?你说你懂芯片,里面的数字电路你懂吗?你说你懂数字电路,更底层的元器件你懂吗?虽然你不懂芯片、不懂数字电路,但是你能说你不会按计算器吗?

所以我们认识世界的过程中多多少少运用了黑箱认识论。再比如我们熟知的牛顿第二定律F=ma,你觉得牛顿是怎么得出来的?他可能就是根据一些测量的速度、时间数据猜的!哎,妈呀,我猜的这个公式好像很符合啊,又找了大量的输入信息,发现这个黑箱的输出信息和他这个公式结果一致。所以就有了牛顿第二定律。不要问我怎么知道的,我也是猜的。

02618418244b41b8016c1dbbbf3309c5.png

那么黑箱认识论有什么用处?其实我感觉这个科学方法论挺有用的。前面说了步骤就是根据输入信息、输出信息->自己总结个规律、创建个模型->再用更多的输入、输出来验证它。

比如最近我们做SAP的ITGC需要查看他们的密码策略,客户说他们密码是必须大于6位纯数字就可以,不要求字母和特殊符号。

那么我们去验证的话科学的方法是怎么做?当然是看它系统的配置参数。

但是我不懂SAP怎么办?我也不知道哪里去看配置,看到配置我可能也看不懂参数。怎么办?

我可以直接让它在测试环境里,新建一个客户,我就试一个5位的纯数字看可不可以,如果不可以,我再试6位的数字可不可以。这样其实也验证了它说的密码策略。

其实这个过程就是他提出了一个关于黑箱的模型,我通过输入信息、输出信息来认识这个黑箱。

当然,我这样做也可能被领导说不专业,可能被领导捶。但是在我们对未知事物的探索过程中,他可能是十分有效,简单粗暴的科学认识论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值