取出某元素 通过索引取数或通过位置取数 s['a'], s[2:], s[1] 4. 调用方法 s.mean(), s.sum(), s.hist() DataFrame 1....创建 DataFrame基本属性有 values、columns、index df = pd.DataFrame({'col1':list('abcde'), 'col2':range(5,10),...索引对齐特性 这是Pandas中非常强大的特性,在对多个DataFrame 进行合并或者加减乘除操作时,行和列的索引都重叠的时候才能进行相应操作,否则会使用NA值进行填充。...需要注意的是:需要在具体列上操作,本身DataFrame并没有这两个方法 df['Physics'].unique()df['Physics'].nunique() 3. count & value_counts...它与df.mean()的结果一样吗?第一问提到的函数也有axis参数吗?怎么使用?
是的,您可以使用 Kerberos 进行身份验证。您可以使用 HBase 授权配置授权。 我可以在 Phoenix 表中看到单个单元格的时间戳吗?这是常用的东西吗?...我可以使用标准 HBase API 访问 Phoenix 创建的表吗? 是的,但不推荐或不支持。数据是由 Phoenix 编码的,因此您必须对数据进行解码才能读取。...我可以将 Phoenix 表映射到现有的 HBase 表上吗? 是的,只要使用 Phoenix 数据类型。您必须使用异步索引并手动更新它们,因为 Phoenix 不会知道任何更新。...index idx on test (col2) 在 col1 上创建索引并在 col2 上创建覆盖索引 create index idx on test (col1) include (col2)...如果 Phoenix 正在使用索引表,您可以在解释计划中看到。您还可以在 Phoenix 查询中提示使用特定索引。 为什么我的二级索引没有被使用?
C、在不同值少的列上不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。在一个不同值较多的列可以建立索引。...2、复合索引 在表中的多个字段组合上创建的索引,只有在查询条件中使用了组合的多个字段的左边字段时,索引才会被使用,使用复合索引时遵循最左前缀集合。...在创建空间索引时,使用SPATIAL关键字。 空间索引必须使用MyISAM存储引擎, 并且空间索引的字段必须为非空。...三、索引的操作 1、索引的创建 创建表时创建索引的语法: CREATE TABLE table_name[col_name data type] [UNIQUE|FULLTEXT|SPATIAL][INDEX...E、不要在列上进行运算 在索引列上进行运算将导致索引失效而进行全表扫描,例如 SELECT * FROM table_name WHERE YEAR(column_name)<2017; F、不使用
3、能写在 WHERE 子句里的条件不要写在 HAVING 子句里 下列 SQL 语句返回的结果是一样的: -- 聚合后使用 HAVING 子句过滤 SELECT sale_date, SUM(quantity...假设我们在 col 列上建立了索引,则下面这些 SQL 语句无法用到索引 SELECT * FROM SomeTable WHERE col * 1.1 > 100; SELECT * FROM...SomeTable WHERE SUBSTR(col, 1, 1) = 'a'; 以上第一个 SQL 在索引列上进行了运算, 第二个 SQL 对索引列使用了函数,均无法用到索引,正确方式是把列单独放在左侧...这是我司出现很多慢 SQL 的主要原因之一,尤其是在跑任务需要分页执行时,经常跑着跑着 offset 就跑到几十万了,导致任务越跑越慢。...」可以发现 key 为 None ,说明确实没有命中索引 我司在提供 SQL 查询的同时,也贴心地加了一个 EXPLAIN 功能及 sql 的优化建议,建议各大公司效仿 ^_^,如图示 21、 批量插入
Oracle 管理系统决定何时使用索引。...用户不用在查询语句中指定使用哪个索引 在删除一个表时,所有基于该表的索引会自动被删除 通过指针加速 Oracle 服务器的查询速度 通过快速定位数据的方法,减少磁盘 I/O ①、创建索引 自动创建: 在定义...PRIMARY KEY 或 UNIQUE 约束后系统自动在相应的列上创建唯一性索引 手动创建: 用户可以在其它列上创建非唯一的索引,以加速查询 在一个或多个列上创建索引 CREATE INDEX index...(last_name); Index created. ②、查询索引 可以使用数据字典视图 USER_INDEXES 和 USER_IND_COLUMNS 查看索引的信息 SELECT ic.index_name...创建同义词 CREATE SYNONYM d_sum FOR dept_sum_vu; Synonym Created.
19、数据库连接及时关闭 20、索引的使用 20.1、避免在索引列上使用函数或运算 20.2、避免改变索引列的类型 20.3、避免在索引列上使用 NOT 20.4、用 >= 替代 > 20.5、避免在索引列上使用...,请在选择性大的列上分别建立单列索引; 切忌不能将表相关的所有 SQL 中 WHERE 涉及到的列复合起来建立复合索引; 3.6、函数索引的规范 由于使用形式需和创建形式一致,尽量避免使用函数索引;如果想要使用函数索引...由于函数索引在使用时,使用形式必须和创建形式一致,故应该尽量避免使用函数索引,尽量采用如下方法转化 SQL 以避免函数索引的使用: 原本在 WHERE 中列上添加函数的,取函数的反意义函数添加到 = 另一侧的常数项上...如下不符合规范: SELECT CLASS,sum(COL) FROM TAB_TEST WHERE CLASS='A' UNION ALL SELECT CLASS,sum(COL) FROM...'; 20.3、避免在索引列上使用 NOT 避免在索引列上使用 NOT,NOT 不会使查询条件使用索引。
1开始【建议】主键禁止使用字符类型,禁止使用联合主键,推荐使用唯一索引来替代【建议】业务上具有唯一特性的字段,必须创建唯一索引【建议】不建议在频繁更新的字段上建立索引【建议】索引尽量建在选择性高的列上,...不在低基数列上建立索引,例如性别、类型选择性的计算方式为: select count(distinct(col_name)) / count(*) from tb_name如果结果小于0.2,则不建议在此列上创建索引...,否则大概率会拖慢SQL执行【建议】合理利用覆盖索引,联合索引,避免过多的单列索引,合理使用索引来避免排序和临时表的使用【建议】对超过30个字符长度的列创建索引时,考虑使用前缀索引,比如 idx_cs_guid2...【强制】避免大表join,禁止3个大表的join,join字段类型需保持绝对一致,关联字段必须有索引【建议】线上业务修改或删除数据,务必根据主键来实现【建议】禁止使用 SELECT * ,必须明确指定列...当某一列的值全为null,count(col)的返回结果为0,但sum(col)的返回结果为null,因此使用sum()时需要注意空指针异常的问题。
的一些进阶使用技巧 SQL 的优化方法 SQL 的书写规范 在介绍一些技巧之前,有必要强调一下规范,这一点我发现工作中经常被人忽略,其实遵循好的规范可读性会好很多,应该遵循哪些规范呢 1、 表名要有意义...ON A.id = B.id; 用到了 「id」列上的索引,而且由于没有子查询,也不会生成临时表 二、避免排序 SQL 是声明式语言,即对用户来说,只关心它能做什么,不用关心它怎么做。...三、能写在 WHERE 子句里的条件不要写在 HAVING 子句里 下列 SQL 语句返回的结果是一样的: -- 聚合后使用 HAVING 子句过滤 SELECT sale_date, SUM(quantity...,不过如果指定带有索引的列作为这两者的参数列,由于用到了索引,可以实现高速查询,由于索引是有序的,排序本身都会被省略掉 五、使用索引时,条件表达式的左侧应该是原始字段 假设我们在 col 列上建立了索引...SUBSTR(col, 1, 1) = 'a'; 以上第一个 SQL 在索引列上进行了运算, 第二个 SQL 对索引列使用了函数,均无法用到索引,正确方式是把列单独放在左侧,如下: SELECT *
大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。 为什么要创建索引呢?这是由于,创建索引能够大大提高系统的性能。 第一,通过创建唯一性索引,能够保证数据库表中每一行数据的唯一性。...一般来说,应该在这些列 上创建索引,比如: 在常常须要搜索的列上,能够加快搜索的速度; 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; 在常常常使用在连接的列上,这 些列主要是一些外键...; 在常常使用在WHERE子句中的列上面创建索引,加快条件的推断速度。...使用这样的方法,能够指定索引的类型、唯一性和复合 性,也就是说,既能够创建聚簇索引,也能够创建非聚簇索引,既能够在一个列上创建索引,也能够在两个或者两个以上的列上创建索引。...;在复合索引中,列的排列顺序是很重要的,因此要认真排列列的顺序,原则上,应该首先定义最唯一的列,例 如在(COL1,COL2)上的索引与在(COL2,COL1)上的索引是不同样的,由于两个索引的列的顺序不同
通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能 索引的缺点 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。...count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗...7.like 模糊查询中,右模糊查询(321%)会使用索引,而%321 和%321%会放弃索引而使用全局扫描 应该建立索引的情况 在经常需要搜索的列上,可以加快搜索的速度; 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构...; 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的; 在经常需要排序的列上创建索引,因为索引已经排序,...这样查询可以利用索引的排序,加快排序查询时间; 在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
提高查询速度,但是降低了增删改的速度,所以使用索引时,要综合考虑....字段,及货号字段 并增加字段:click_count -- 点击量 在goods_name列上加唯一性索引 在shop_price列上加普通索引 在clcik_count列上加普通索引 删除click_count...列上的索引 对goods表插入以下数据: +----------+------------------------------+--------+----------+-----------+-----...提高查询速度,但是降低了增删改的速度,所以使用索引时,要综合考虑....值越分散的列,索引的效果越好 索引类型 primary key主键索引 index 普通索引 unique index 唯一性索引 fulltext index 全文索引
只有需要全局唯一主键时,使用外部自增id服务 如果没有主键或唯一索引,UPDATE/DELETE是通过所有字段来定位操作的行,相当于每行就是一次全表扫描 少数情况可以使用联合唯一主键,需与DBA协商...组合唯一索引作为主键的话,是随机写入,适合写少读多的表 主键不允许更新 4.4 索引尽量建在选择性高的列上 不在低基数列上建立索引,例如性别、类型。...tbname,越接近1说明col1上使用索引的过滤效果越好 走索引扫描行数超过30%时,改全表扫描 4.5 最左前缀原则 MySQL使用联合索引时,从左向右匹配,遇到断开或者范围查询时,无法用到后续的索引列...,如果在该列上ORDER BY或GROUP BY时无法使用索引,也不能把它们用作覆盖索引(Covering Index) 如果在varbinary或blob这种以二进制存储的列上建立前缀索引,要考虑字符集...4.8 尽量不要在频繁更新的列上创建索引 如不在定义了ON UPDATE CURRENT_STAMP的列上创建索引,维护成本太高(好在MySQL有insert buffer,会合并索引的插入) 4.9
这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情 >> [SQL编写规范] 一、书写规范 二、书写优化性能建议 oracle数据库开发优化建议 一、书写规范 1、sql编写时...如必须使用排序操作,尽量建立在有索引的列上。 12、索引的建立应慎重考虑,不是越多越好。索引可以提高相应的select的效率,但同时也降低了INSERT、UPDATE 的效率。...14、避免不必要的类型转换 15、in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。 16、使用ROWID提高检索速度。...对SELECT得到的单行记录,需进行DELETE、UPDATE操作时,使用ROWID将会使效率大大提高。...22、复合索引创建时,建议按字段可选性高低进行排序,即字段值多的排在前面。
大家好,又见面了,我是你们的朋友全栈君。...例如当开发人员创建了一个以字段A作为索引的非聚簇索引结构,并且在SQL中使用字段A作为查询条件执行检索时。...复合索引: 单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上; 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引); 复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引...; 同时有两个概念叫做窄索引和宽索引,窄索引是指索引列为1-2列的索引,宽索引也就是索引列超过2列的索引; 设计索引的一个重要原则就是能用窄索引不用宽索引,因为窄索引往往比组合索引更有效; 使用: 创建索引...col2=B 将不会使用索引 2、何时是用复合索引 根据where条件建索引是极其重要的一个原则; 注意不要过多用索引,否则对表更新的效率有很大的影响,因为在操作表的时候要化大量时间花在创建索引中
其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。...ON table_name(col_name); --创建普通组合索引CREATE INDEX index_name ON table_name(col_name_1,col_name_2); --创建唯一组合索引...show profiles; 五、创建索引的时机 到这里我们已经学会了建立索引,那么我们需要在什么情况下建立索引呢?...刚才提到只有某些时候的LIKE才需建立索引。因为在以通配符%和_开头作查询时,MySQL不会使用索引。...- 组合索引代替多个单列索引(经常使用多个条件查询时)- 尽量使用短索引- 使用连接(JOIN)来代替子查询(Sub-Queries)- 连表时注意条件类型需一致- 索引散列值(重复多)不适合建索引,例
) 单列索引和组合索引 单列索引: 即一个索引只包含单个列,一个表可以有多个单列索引 组合索引: 指在表的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用 全文索引...,并且索引中的列尽可能要少,而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段 数据量小的表最好不要使用索引,由于数据较少,查询花费的时间可能比遍历索引时间还要短,索引可能不会产生优化效果 在条件表达式中经常用到的不同值较多的列上建立索引...使用唯一索引需能确保定义的列的数据完整性,以提高查询速度 在频繁排序或分组(即group by或order by操作)的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引 使用 使用 CREATE...TABLE 创建表的时候,除了可以定义列的数据类型,还可以定义主键约束、外键约束或者唯一性约束,而不论创建哪种约束,在定义约束的同时相当于在指定列上创建了一个索引。...,用来指定创建索引 col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择 indexname为指定索引的名称,为可选参数,如果不指定则MySQL默认colname为索引值 length
问题3:什么时候应该使用索引,什么时候不应该使用索引? 答案: 应该使用索引的情况: 在经常用于搜索、排序和连接的列上创建索引,可以大大提高查询速度。...在唯一性要求高的列上创建唯一索引,以保证数据的唯一性。 不应该使用索引的情况: 在数据量小的表上,创建索引可能并不会带来明显的性能提升,反而会增加额外的存储和维护开销。...例如,如果你有一个包含三列的索引(col1, col2, col3),并且你的查询条件只涉及col2和col3,那么MySQL可能不会使用这个索引。...但是,如果查询条件包含col1和col2,或者只有col1,那么MySQL就可能会使用这个索引。...因此,只应在需要提高查询性能的列上创建索引。 使用覆盖索引:如果一个查询只需要访问索引中的信息,而不需要访问数据行,那么MySQL就可以使用覆盖索引来提高查询性能。
背景 在第一篇中我介绍了如何访问元数据,元数据为什么在数据库里面,以及如何使用元数据。介绍了如何查出各种数据库对象的在数据库里面的名字。...有时问题是选择一个坏的填充因子,错误地设置ignore_dup_key选项,创建一个永远不会被使用(但必须被维护)的索引,丢失外键上的索引,或者将GUID作为主键的一部分。...这是因为它是确保只获得用户表的最简单方法。我们选择index_id 的values大于0,因为如果不为表创建集群索引,在sys中仍然有一个条目。索引,但它指向的是堆,不代表索引。...此外,无论该表是否有聚集索引,每个非聚集索引都有一行,其index_id值大于1。我们过滤了的索引,这些索引是由数据库引擎优化顾问(DTA)创建的,目的仅仅是测试一个可能的索引是否有效。...注意:我已经在代码里使用了动态管理视图sys.dm_db_index_usage_stats,这里起到了手机使用信息的作用,之后我们会更详尽的使用换这个对象来说明其作用。 这些索引占用了多少空间?
因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。...; 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的; 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间; 在经常使用在...这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。...使用这种方法,可以指定索引的类型、唯一性和复合性,也就是说,既可以创建聚簇索引,也可以创建非聚簇索引,既可以在一个列上创建索引,也可以在两个或者两个以上的列上创建索引。...;在复合索引中,列的排列顺序是非常重要的,因此要认真排列列的顺序,原则上,应该首先定义最唯一的列,例如在(COL1,COL2)上的索引与在(COL2,COL1)上的索引是不相同的,因为两个索引的列的顺序不同
区分度的公式是count(distinct col)/count(*), 表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、 性别字段可能在大数据面前区分度就是0,那可能有人会问...,这个比例有什么经验值吗?...) = ’2014-05-29’ 就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值, 但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。...索引一定要创建在 where 后的条件列上,而不是 select 后的选择数据的列上,另外,我们要尽量选择在唯一值多的大表上的列建立索引,例如:男女性别列唯一值, 不适合建立索引 慢查询优化 先运行看看是否真的很慢...by limit 形式的sql语句让排序的表优先查 了解业务方使用场景 加索引时参照建索引的几大原则 观察结果,不符合预期继续从0分析
领取专属 10元无门槛券
手把手带您无忧上云