1. 列举 创建索引但是无法命中索引的8种情况

/*这里有我自己整理了一套最新的python系统学习教程,
包括从基础的python脚本到web开发、爬虫、数据分析、
数据可视化、机器学习等。小编这里推荐加小编的python学习群:895,817, 687
*/- like '%xx'select * from tb1 where name like '%cn';- 使用函数select * from tb1 where reverse(name) = 'wupeiqi';- orselect * from tb1 where nid = 1 or email = 'seven@live.com';特别的:当or条件中有未建立索引的列才失效,以下会走索引select * from tb1 where nid = 1 or name = 'seven';select * from tb1 where nid = 1 or email = 'seven@live.com' and name = 'alex'- 类型不一致如果列是字符串类型,传入条件是必须用引号引起来,不然...select * from tb1 where name = 999;- !=select * from tb1 where name != 'alex'特别的:如果是主键,则还是会走索引select * from tb1 where nid != 123- >select * from tb1 where name > 'alex'特别的:如果是主键或索引是整数类型,则还是会走索引select * from tb1 where nid > 123select * from tb1 where num > 123- order byselect email from tb1 order by name desc;当根据索引排序时候,选择的映射如果不是索引,则不走索引特别的:如果对主键排序,则还是走索引:select * from tb1 order by nid desc;

2. 数据库优化方案?

1. 避免全表扫描,首先应考虑在 where 及 orderby 涉及的列上建立索引。2. 避免在 where 子句中对字段进行 null 值判断,导致引擎放弃使用索引而进行全表扫描 3. 避免在 where 子句中使用 != 或>操作符,引擎将放弃使用索引而进行全表扫描。4. 避免在 where 子句中使用or 来连接条件5. 慎用in 和 not, 可以用 exists 代替 in6. 慎用 like 'XXX%',要提高效率,可以全文检索。7. 应尽量避免在 where 子句中对字段进行表达式操作,如:select id from t where num/2=100应改为select id from t where num=100*28. 避免在where子句中对字段进行函数操作select id from t where substring(name,1,3)='abc' 改为:select id from t where name like 'abc%'9. 在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。(索引的最左前缀原则) 10. 并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。11. 索引不是越多越好,索引可以提高select 的效率,同时也降低 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引。12. 任何地方都不要使用 select * from t ,用具体的字段列表代替“*”13. 避免频繁创建和删除临时表,以减少系统表资源的消耗。14. 在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create table,然后insert。15. 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。数据库中的数据在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大16. 读写分离。通过数据库配置设置, mysql复制时,产生了多个数据副本(备库),为减少服务器压力,备库用于处理读操作,主库可同时处理读写。备库的复制是异步的,无法实时同步,读写分离的主要难点也在于备库上的脏数据。通常如果使用备库进行读,一般对数据的实时性要求不能太高。17. 分库、分表。分库:当数据库中的表太多,可以考虑将表分到不同的数据库分表水平分表:将一些列分到另一张表垂直分表:将历史信息分到另一张表中,很久之前的记录少有查询18. 利用缓存存储经常被查询的数据。利用redis、memcache

3. 1000w条数据,使用limit offset 分页时,为什么越往后翻越慢?如何解决?

答案一:先查主键,在分页。select * from tb where id in (select id from tb where limit 10 offset 30)答案二:按照也无需求是否可以设置只让用户看200页答案三:记录当前页 数据ID最大值和最小值在翻页时,根据条件先进行筛选;筛选完毕之后,再根据limit offset 查询。select * from (select * from tb where id > 22222222) as B limit 10 offset 0如果用户自己修改页码,也可能导致慢;此时对url种的页码进行加密(rest framework )

4. redis中数据库默认是多少个db 及作用?

Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过配置databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念。

5. 如果redis中的某个列表中的数据量非常大,如果实现循环显示每一个值?

通过scan_iter分片取,减少内存压力scan_iter(match=None, count=None)增量式迭代获取redis里匹配的的值# match,匹配指定key# count,每次分片最少获取个数r = redis.Redis(connection_pool=pool)for key in r.scan_iter(match='PREFIX_*', count=100000):print(key)

阿里Python后端1w+薪资面试真题!(附带准答案)offer轻松拿到手相关推荐

  1. java ibatis 获取执行的sql_阿里Java技术面开源框架面试真题曝光,这些真题你能答对多少?...

    前言: 又到了一年的金九银十季,相信有很多朋友都已经有了跳槽的准备,或者有已经跳槽成功的朋友,我也有一个利用这次机会跳槽阿里的朋友,下面我分享的就是他面试记得的阿里面试关于spring全家桶的一些问题 ...

  2. 185 道必须掌握的大数据面试真题(附答案)

    当今时代,跳槽确实是大部分人升职加薪最快的方式,特别是职业生涯初期.说起来也是很无奈,公司经常是宁愿花更多的钱来请个新人也不愿意加薪留住老人. 面试了 N 多公司之后,我发现其实问来问去也就那几个知识 ...

  3. 2023超全整理——116道网络安全工程师面试真题(附答案),建议收藏

    随着国家对网络安全的重视度,促使这个职业也变得炙手可热,越来越多的年轻人为进入安全领域在做准备. ****数以百计的面试,为何迟迟无法顺利入职?******能力无疑是至关重要的,可却有不少能力不比已入 ...

  4. 【数据攻略】字节面试真题(含答案)+100道面试题库

    整理了一套字节的面试真题,还有100道PDF版的面试题库 一.SQL题 面试真题1: 抖音电商平台,现有一张订单表(order_info),有以下字段: order_id goods_id order ...

  5. 人行计算机面试真题,2018中国人民银行招聘面试真题(附答案)

    原标题:2018中国人民银行招聘面试真题(附答案) 2018中国人民银行招聘笔试成绩已出,面试即将开始,同学们应该提早着手准备了,中公金融人(yhzpks)小编为考生整理了银行面试真题,提前了解一下人 ...

  6. 银监局计算机英语面试题及答案,2012年国家公务员银监局面试真题及参考答案...

    [部分真题参考答案(专业题除外)] 一.如果领导让你起草一份监管规则,没有范例,没有以往同类规则参考,你将如何开展工作? [参考答案] 1)通过图书馆或者网络查找其他行业的监管规则,在格式.体例等方面 ...

  7. 4面阿里拿到P7Offer,面试真题解析

    前言 在这个网络发展快速的时代,我想问为什么你选择做程序员?有人说因为不善交际,也有人说最火的行业互联网,最好的职业程序员.确实在这个繁荣的行业,只要你自己不下船技术不水,就可以衣食无忧,努力努力说不 ...

  8. 社招阿里java岗到底有多难?分享阿里社招面试真题(附答案),以及P7需要掌握的知识点总结!

    前言 本来是抱着想试试淘系技术部的心态,没想到一路走完了流程,这里前辈水平的确很高,面试就感觉出来了,想把过程中的面经分享给大家: 一面 线程池了解吗,几种线程池创建方式 ThreadPoolExec ...

  9. java匿名对象赋初值_不想进BAT的Java程序员不是好程序员,BAT后端Java岗面试真题分享

    一. JDK/JRE/JVM 三者之间的联系与区别 JDK:开发者提供的开发工具箱,是给程序开发者用的.它包括完整的JRE(Java Runtime Environment),Java运行环境,还包含 ...

最新文章

  1. 大话数据结构书籍及配套源码
  2. 快速排序 python菜鸟教程-NumPy 排序、条件刷选函数
  3. Scrapy-xpath用法以及实例
  4. his系统存储服务器,关于HIS服务器及存储建设的前瞻性需求报告
  5. Android ListView 的优化
  6. vantUI应用(Tabbar标签页)返回上一页的失效问题
  7. 详解Python 3.6.x程序打包并发布至pypi的完整过程
  8. Java面向对象练习题之三角形
  9. 用足球阵型告诉你,阿里云如何护航全网70%世界杯流量 1
  10. 软件架构--《企业IT架构转型之道》笔记
  11. html微博换头像,手机新浪微博头像怎么设置 手机新浪微博更换头像教程
  12. sketch up rbs/rbz/rb插件安装方法
  13. php 货币换算,PHP货币换算程序代码
  14. 【知乎问答】有哪些特殊的搜索引擎?
  15. HTML动态超炫酷的404页面源码
  16. addclass和css()的区别
  17. 激战2怎么选最新的服务器,选哪个服好?《激战2》高玩分析各服务器进驻人数...
  18. 整理一些前端模版比较好的网站
  19. 3D测量| 主动模式投影提高AOI三维测量精度
  20. Spring Boot 实现接口幂等性的 4 种方案

热门文章

  1. 局域网络连接的计算机不全,WIN10局域网电脑和设备显示不完整
  2. android string json,安卓之String json解析
  3. java 计算股票高低点_[转载]股市中常用的一些计算高低点的计算方法
  4. python面向对象继承_Python 面向对象 --- 继承
  5. 微型计算机字,在微型计算机的汉字系统中,一个汉字的内码占 – 手机爱问
  6. Java判断上传的文件是否是图片,如果是就对上传的图片进行压缩
  7. 牛客题霸 NC3 链表中环的入口结点
  8. Vue + Element UI + Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(十)问题管理页面
  9. Going Home
  10. Two Arrays and Sum of Functions