聚集索引

MySQL 索引的面试题总结

China☆狼群 提交于 2019-12-02 09:18:06
什么是索引? 索引是一种能帮助 MySQL 提高查询效率的数据结构。 索引分别有哪些优点和缺点? 索引的优点如下: 快速访问数据表中的特定信息,提高检索速度。 创建唯一性索引,保证数据表中每一行数据的唯一性。 加速表与表之间的连接。 使用分组和排序进行数据检索时,可以显著减少查询中分组和排序的时间。 索引的缺点: 虽然提高了的查询速度,但却降低了更新表的速度,比如 update、insert,因为更新数据时,MySQL 不仅要更新数据,还要更新索引文件; 建立索引会占用磁盘文件的索引文件。 使用索引注意事项: 使用短索引,短索引不仅可以提高查询速度,更能节省磁盘空间和 I/O 操作; 索引列排序,MySQL 查询只使用一个索引,因此如果 where 子句中已经使用了索引的话,那么 order by 中的列是不会使用索引的,因此数据库默认排序可以符合要求的情况下,不要进行排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引; like 语句操作,一般情况下不鼓励使用 like 操作,如果非使用不可, 注意 like “%aaa%” 不会使用索引,而like "aaa%"可以使用索引; 不要在列上进行运算; 不适用 NOT IN 和 <> 操作。 以下 SQL 有什么问题?该如何优化? select * from t where f/2=100; 该 SQL

某医疗影像公司.net面试

孤者浪人 提交于 2019-12-01 18:31:56
全网云医疗 1.自我介绍 2.介绍下自己做的项目 3.数据库怎么调优的 4.非聚集索引原理(具体的问了数据库a表,b表(1,2,3字段),a left join b的2字段,怎么建非聚集索引。关键字:include) 5.webapi效率慢了怎么调优 6.讲讲你对于redis的认识以及用法 7.如果在客户现场,突发内存溢出,手边只有本机代码,怎么解决问题。 8.说说线程同步问题。 9.多线程问题,a,b,c三个线程,b,c先执行,然后a再执行,执行完了再执行d线程(先用whenall,再用ContinueWith) 10.一个线程在识别到一个信号后再进行进一步处理,怎么做。 11.你对.net core的认识 12.讲讲对于分布式架构的认识。 13.如果注册中心服务停了,对其他服务有影响吗?如果是有一个注册中心,服务停了,该怎么办。 14.对数据结构有了解吗 来源: https://www.cnblogs.com/zc27/p/11712231.html

SQLServer索引

牧云@^-^@ 提交于 2019-12-01 11:41:40
一、重要内容汇总:   1.SQLServer索引有两种,聚集索引和非聚集索引;   2.聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。   3.聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。   4.创建索引语法:CREATE [UNIQUE][CLUSTERED | NONCLUSTERED] INDEX index_name ON {table_name | view_name} [WITH [index_property [,....n]]     事例:建为pawn_ddhxx 表建一个索引名为Clust_ddhxx_bh,索引列为bh的聚集索引,create Clustered index Clust_ddhxx_bh on pawn_ddhxx (bh)   5.删除索引语法:DROP INDEX table_name.index_name[,table_name.index_name]     事例:drop index pawn_fk_dwdjbdw.Clust_dw_bh 二、 内容 详述 1.1 什么是索引?   索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间。 下面举两个简单的例子:   图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如

mysql之索引原理

不想你离开。 提交于 2019-12-01 08:03:22
一 初识索引 为什么要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。 什么是索引? 索引在MySQL中也叫是一种“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能 非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。 索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。 索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。 你是否对索引存在误解? 索引是应用程序设计和开发的一个重要方面。若索引太多,应用程序的性能可能会受到影响。而索引太少,对查询性能又会产生影响,要找到一个平衡点,这对应用程序的性能至关重要。一些开发人员总是在事后才想起添加索引----我一直认为,这源于一种错误的开发模式。如果知道数据的使用,从一开始就应该在需要处添加索引。开发人员往往对数据库的使用停留在应用的层面,比如编写SQL语句、存储过程之类,他们甚至可能不知道索引的存在,或认为事后让相关DBA加上即可。DBA往往不够了解业务的数据流,而添加索引需要通过监控大量的SQL语句进而从中找到问题

吉利.net面试

笑着哭i 提交于 2019-12-01 05:32:13
昨天去了吉利面试.net开发,面试和一般的.net公司面试比起来比较有深度。总体过程磕磕绊绊,以为没戏的时候,下午收到了offer,不过因为待遇问题,还是拒绝掉了。不过这次面试过程对于自己还是有很大帮助的,挖掘了自己的一些潜在问题,特此记录下来。后面的每次面试只要有价值都会记录。 1.先自我介绍下吧。 这是每次面试开篇必备的,针对自己过去的履历,做个简短精要的介绍,切忌啰啰嗦嗦,长篇大论,面试官会觉得这个人把握不住重点。 2.介绍下自己重点做的项目或者模块,说下业务以及涉及到的表,怎么设计的。 这个就是根据自身情况如实介绍,不过在我说到有个业务涉及到一个业务下有子业务的时候,表结构为主表a和字表b时,面试官问到如果在这个业务下有很多子业务的时候,表也是一直建字表吗,当时没多想就是说是的,后来面试官提可以保存json串,后来自己想了下也可以一个表通过parentID字段来确认父子关系,这样多少子业务一张表就解决了。 3.数据库调优怎么调的?   (1)先将执行慢的脚本找出来,然后一点点删逻辑,确定执行慢的点,然后进行对应的调整,一般来说对字段加个非聚集索引就可以了。   (2)也可以通过查找执行计划来进行调整。   (3)将冷热数据也就是不常用的数据和常用的数据进行分离。   (4)一张大数量的表可以适量放些多余字段,这样就不用在此联表查询,提升效率。 4

SQLServer中重建聚集索引之后会影响到非聚集索引的索引碎片吗

大憨熊 提交于 2019-12-01 04:40:43
上午(20171011)看到qq群里发了一个云栖大会的链接,点进去看了一下sqlserver的专场,刚好是提问环节 有人问了一个问题,原话记不清楚了, 大概的意思(他自己认为)就是说:“SQLServer中重建聚集索引之后会影响非聚集索引的碎片情况,也要顺带重建非聚集索引” 我想大概是他自己认为“重建聚集索引之后会影响到非聚集索引的索引碎片” 提问者跟专家交流这个观点,一开始提问之后还撤了几句堆表RID,聚集表key值啥的。 专家一开始说这两者没有关系(重建聚集索引之后不会影响到非聚集索引的索引碎片),后面被提问之后可能是有点紧张,改口说没注意过这个问题。 首先抛出结论:对于聚集索引表,重建聚集索引之后不会影响到非聚集索引的索引碎片,重建聚集索引跟非聚集索引碎片之间的没有关系,完全不搭嘎的。 这些问题,其实尝试自己测试一下不就清楚了么? 聚集索引重建之后,对非聚集索引是否有影响 首先,暂且先不扯聚集表堆表啥的了,直接说聚集表, 非聚集索引在叶级直接存储的是聚集索引的key值,在重建聚集索引(或者重组)前后,非聚集索引存储的对应的key值是不变的 重建聚集索引之后,数据的屋里存储位置可能会发生变化,这是会影响到聚集索引的物理存储和碎片情况 但是对于非聚集索引来说,非聚集索引存储的对应的聚集索引的key值是不变的, 那非聚集索引的碎片跟聚集索引的重建与否有个毛的关系。

mysql索引原理

99封情书 提交于 2019-11-30 16:17:21
mysql索引原理 阅读目录    初识索引    索引的原理    索引的数据结构    聚集索引与辅助索引    MySQL索引管理    测试索引    正确使用索引    联合索引    查询优化神器-explain    慢查询优化的基本步骤    慢日志管理 一 初识索引 为什么要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。 什么是索引? 索引在MySQL中也叫是一种“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能 非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。 索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。 索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。 你是否对索引存在误解? 索引是应用程序设计和开发的一个重要方面。若索引太多,应用程序的性能可能会受到影响。而索引太少,对查询性能又会产生影响,要找到一个平衡点,这对应用程序的性能至关重要。一些开发人员总是在事后才想起添加索引----我一直认为,这源于一种错误的开发模式。如果知道数据的使用

数据库索引、优化

对着背影说爱祢 提交于 2019-11-30 05:47:16
参考地址: 如何看MS SQLSERVER数据库的执行计划https://blog.csdn.net/luoyanqing119/article/details/17022649 SQLserver索引的原理和应用 https://www.cnblogs.com/knowledgesea/p/3672099.html 聚集索引和非聚集索引 https://www.cnblogs.com/aspnethot/articles/1504082.html 数据库SQL优化大总结之 百万级数据库优化方案 https://www.cnblogs.com/yunfeifei/p/3850440.html 数据库优化之程序操作优化 https://www.cnblogs.com/AK2012/archive/2012/12/28/2012-122803.html 上图中,数据库执行一个T-SQL发生的事,了解一下数据库的构成以及功能。 执行计划:   可以缓存,存储过程/参数化查询   select * from User where id=1   select * from User where id=2   select * from User where id=@id 数据是什么?   数据库就是把东西有序放好,还能随时找到的一个工具。应用程序,有序的数据管理,数据在硬盘上(持久化,唯一的

『浅入浅出』MySQL 和 InnoDB

不想你离开。 提交于 2019-11-30 03:16:13
本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。传送门: https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q 作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL、PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系的认知,所以最近两个月的时间看了几本数据库相关的书籍并且阅读了 MySQL 的官方文档,希望对各位了解数据库的、不了解数据库的有所帮助。 本文中对于数据库的介绍以及研究都是在 MySQL 上进行的,如果涉及到了其他数据库的内容或者实现会在文中单独指出。 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有两个词非常容易混淆,也就是 数据库 和 实例 : 数据库:物理操作文件系统或其他形式文件类型的集合; 实例:MySQL 数据库由后台线程以及一个共享内存区组成; 对于数据库和实例的定义都来自于 MySQL 技术内幕:InnoDB 存储引擎 一书,想要了解 InnoDB 存储引擎的读者可以阅读这本书籍。