zoukankan      html  css  js  c++  java
  • sql的优化-索引

    什么是索引?索引的定义是如何,在你的项目中用来了索引吗?

    索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。

    索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

    定义:

    分为普通索引, 唯一索引, 主键索引

    普通索引

    创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);

    修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);

    创建表的时候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );
     drop  index <索引名>
     

    唯一索引是不允许其中任何两行具有相同索引值的索引。

    创建唯一索引的几种方式:
    创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
    修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);
    创建表的时候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );
     
    主索引,数据库表中一列或列组合(字段)的值唯一标识表中的每一行。该列称为表的主键
     
    项目中是否用到索引?
    conut(*),该查询语句在表中有索引的情况下,会用到索引。SQL优化器在底层会查找索引或者主键count(pk_name),
    所以在数据库中count(*)在有主键的情况下,速度会比没有主键的情况下快。
     
    count(1)和count(*)的区别, 
    在没有索引或者主键的情况下, count(1)比count(*)要快, 应为count(*),此时会查找所有的列。
    在有索引或者主键的情况下,count(1)和count(*)都一样快,都会查找索引。
     
    在生产项目与门户项目集成时,用到了唯一性索引,unique index, 在集团编码列上用唯一性索引,此时主要提高查询速度。
     
  • 相关阅读:
    1.27
    1.25
    Representation Learning with Contrastive Predictive Coding
    Learning a Similarity Metric Discriminatively, with Application to Face Verification
    噪声对比估计(负样本采样)
    Certified Adversarial Robustness via Randomized Smoothing
    Certified Robustness to Adversarial Examples with Differential Privacy
    Dynamic Routing Between Capsules
    Defending Adversarial Attacks by Correcting logits
    Visualizing Data using t-SNE
  • 原文地址:https://www.cnblogs.com/alisonGavin/p/8182349.html
Copyright © 2011-2022 走看看