精华内容
下载资源
问答
  • 复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。 建设原则:  1、索引应该经常建在Where 子句经常用到的列上。如果...

    Oracle 建立索引及SQL优化

    数据库索引:

    索引有单列索引
    复合索引之说


    如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。

    建设原则:

     1、索引应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%。则应该考虑。

     2、对于两表连接的字段,应该建立索引。如果经常在某表的一个字段进行Order By 则也经过进行索引。

     3、不应该在小表上建设索引。

    优缺点:
     1、索引主要进行提高数据的查询速度。 当进行DML时,会更新索引。因此索引越多,则DML越慢,其需要维护索引。 因此在创建索引及DML需要权衡。

    创建索引:
     单一索引:Create Index <Index-Name> On <Table_Name>(Column_Name);

     复合索引: Create Index i_deptno_job on emp(deptno,job); —>在emp表的deptno、job列建立索引。

      select * from emp where deptno=66 and job='sals' ->走索引。

      select * from emp where deptno=66 OR job='sals' ->将进行全表扫描。不走索引

      select * from emp where deptno=66 ->走索引。

      select * from emp where job='sals' ->进行全表扫描、不走索引。

      如果在where 子句中有OR 操作符或单独引用Job 列(索引列的后面列) 则将不会走索引,将会进行全表扫描。

     


    Sql 优化:

    当Oracle数据库拿到SQL语句时,其会根据查询优化器分析该语句,并根据分析结果生成查询执行计划。
    也就是说,数据库是执行的查询计划,而不是Sql语句。
    查询优化器有rule-based-optimizer(基于规则的查询优化器) 和Cost-Based-optimizer(基于成本的查询优化器)。
    其中基于规则的查询优化器在10g版本中消失。
    对于规则查询,其最后查询的是全表扫描。而CBO则会根据统计信息进行最后的选择。


    1、先执行From ->Where ->Group By->Order By

    2、执行From 字句是从右往左进行执行。因此必须选择记录条数最少的表放在右边。这是为什么呢?  

    3、对于Where字句其执行顺序是从后向前执行、因此可以过滤最大数量记录的条件必须写在Where子句的末尾,而对于多表之间的连接,则写在之前。
    因为这样进行连接时,可以去掉大多不重复的项。  

    4. SELECT子句中避免使用(*)ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间

    5、索引失效的情况:
     ① Not Null/Null 如果某列建立索引,当进行Select * from emp where depto is not null/is null。 则会是索引失效。
     ② 索引列上不要使用函数,SELECT Col FROM tbl WHERE substr(name ,1 ,3 ) = 'ABC' 
    或者SELECT Col FROM tbl WHERE name LIKE '%ABC%' 而SELECT Col FROM tbl WHERE name LIKE 'ABC%' 会使用索引。

     ③ 索引列上不能进行计算SELECT Col FROM tbl WHERE col / 10 > 10 则会使索引失效,应该改成
    SELECT Col FROM tbl WHERE col > 10 * 10

     ④ 索引列上不要使用NOT ( != 、 <> )如:SELECT Col FROM tbl WHERE col ! = 10 
    应该 改成:SELECT Col FROM tbl WHERE col > 10 OR col < 10 。

    6、用UNION替换OR(适用于索引列)
      union:是将两个查询的结果集进行追加在一起,它不会引起列的变化。 由于是追加操作,需要两个结果集的列数应该是相关的,
    并且相应列的数据类型也应该相当的。union 返回两个结果集,同时将两个结果集重复的项进行消除。 如果不进行消除,用UNOIN ALL.

    通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描. 注意, 以上规则只针对多个索引列有效. 
    如果有column没有被索引, 查询效率可能会因为你没有选择OR而降低. 在下面的例子中, LOC_ID 和REGION上都建有索引.

      高效:
      SELECT LOC_ID , LOC_DESC , REGION
      FROM LOCATION
      WHERE LOC_ID = 10
      UNION
      SELECT LOC_ID , LOC_DESC , REGION
      FROM LOCATION
      WHERE REGION = “MELBOURNE”

      低效:
      SELECT LOC_ID , LOC_DESC , REGION
      FROM LOCATION
      WHERE LOC_ID = 10 OR REGION = “MELBOURNE”
      如果你坚持要用OR, 那就需要返回记录最少的索引列写在最前面.

    7. 用EXISTS替代IN、用NOT EXISTS替代NOT IN
    在许多基于基础表的查询中, 为了满足一个条件, 往往需要对另一个表进行联接. 在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率. 
    在子查询中, NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下, NOT IN都是最低效的(因为它对子查询中的表执行了一个全表遍历). 
    为了避免使用NOT IN, 我们可以把它改写成外连接(Outer Joins)或NOT EXISTS.

    例子:

    高效: SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X’ FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB’)

    低效: SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB’)

    展开全文
  • http://www.cnblogs.com/wy123/p/5604400.htmlSQL Server创建复合索引时,复合索引列顺序对查询的性能影响 说说复合索引写索引的博客太多了,一直不想动手写,有一下两个原因:一是觉得有炒剩饭的嫌疑,有兄弟曾说:...

    http://www.cnblogs.com/wy123/p/5604400.html
    SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

    说说复合索引
    写索引的博客太多了,一直不想动手写,有一下两个原因:
    一是觉得有炒剩饭的嫌疑,有兄弟曾说:索引吗,只要在查询条件上建索引就行了,真的可以这么暴力吗?
    二来觉得,索引是个非常大的话题,很难概括出所有的情况,你不整出点新意来,倒是有抄袭照搬的嫌疑
    既然写了,就写一点稍微不一样的东西出来,
    好了,废话打住,
    /*
      20160814备注:今天发现一个类似的文章:http://www.cnblogs.com/fly_zj/archive/2012/08/11/2633629.html
      可以理解为:添加组合索引时,做相等运算字段应该放在最前面
      但这么说也不完全准确,应该说是,将选择性高的字段,放在最前面,通俗说就是,将最有效的过滤条件,方式复合索引的第一位
    */

    搭建测试环境:
    创建一张表,模拟实际业务中的一个表,往里面填入数据,时间字段上,相对按照时间均匀地填充,其他字段以GUID填充

    Create table BusinessInfoTable
    (
        BuniessCode1 varchar(50),
        BuniessCode2 varchar(50),
        BuniessCode3 varchar(50),
        BuniessCode4 varchar(50),
        BuniessStatus1 tinyint,
        BuniessStatus2 tinyint,
        BuniessDateTime1 Datetime,
        BuniessDateTime2 Datetime,
        OtherColumn1 varchar(50),
        OtherColumn2 varchar(50),
        OtherColumn3 varchar(50)
    )
    
    declare @i int=0
    while @i<1000000
    begin
        insert into BusinessInfoTable 
        values 
        (
            NEWID(),NEWID(),NEWID(),NEWID(),RAND()*100,RAND()*100,
            DATEADD(MI,@i,GETDATE()),DATEADD(MI,@i,GETDATE()),NEWID(),NEWID(),NEWID()
        )
        set @i=@i+1
    end
    

    现在有这么一个查询(实际上查询远比这个复杂,简化一点,不要刻意造环境)

    DECLARE @startDate DATETIME;
    DECLARE @endDate DATETIME;
    SET @startDate = CONVERT(CHAR(10), GETDATE(), 120);
    SET @endDate = DATEADD(dd, 7, @startDate);
    SELECT OtherColumn2,
         BuniessStatus1,
         BuniessStatus2,
         BuniessDateTime1,
         BuniessDateTime2
    FROM BusinessInfoTable
    WHERE BuniessDateTime1 BETWEEN @startDate AND @endDate
        AND BuniessDateTime2 BETWEEN @startDate AND @endDate
        AND BuniessStatus1 = 55
        AND BuniessStatus2 = 66;
    

    1

    说明一点:
    暂时不考虑聚集索引,毕竟一个表上只能有一个聚集索引,
    别人也不是傻子,不会轻易去建聚集索引,聚集索引早被占用了
    既然被占用了,原则是一般不去动别人现有的东西的,比如别人建了聚集索引,你给人家删了,根据自己的情况建聚集索引,这不是找*么

    有经验的你一定考虑符合索引了,同时考虑到为避免Key Lookup导致的书签查找,我们把查询索要的OtherColumn2列include进来
    比如这样

    CREATE NONCLUSTERED INDEX IDX_1 ON BusinessInfoTable 
    **(BuniessStatus1,BuniessStatus2,BuniessDateTime1,BuniessDateTime2)**
    INCLUDE(OtherColumn2)
    

    或者这样,只是索引前导列顺序不一样

    CREATE NONCLUSTERED INDEX IDX_2 ON BusinessInfoTable
    **(BuniessDateTime1,BuniessDateTime2,BuniessStatus1,BuniessStatus2)**
    INCLUDE(OtherColumn2)
    

      当然可以随意调整四个列的顺序,我就不过多地做演示了,有兴趣的自己试
      这里的前导列的顺序并不会影响到索引的使用,查询的时候都是非聚集索引Seek,绝对的
      那么问题来了,完全一样的查询条件,结果一样,使用不同的索引,索引的区别仅仅是列顺序不一样,其代价一样吗,有区别吗?

      同样查询,使用不同索引的结果(分别是上面的IDX_1和IDX_2):
      下面看图说话

    DECLARE @startDate DATETIME;
    DECLARE @endDate DATETIME;
    SET @startDate = CONVERT(CHAR(10), GETDATE(), 120);
    SET @endDate = DATEADD(dd, 7, @startDate);
    SELECT OtherColumn2,
           BuniessStatus1,
           BuniessStatus2,
           BuniessDateTime1,
           BuniessDateTime2
    FROM BusinessInfoTable WITH(INDEX(IDX_1))
    WHERE BuniessDateTime1 BETWEEN @startDate AND @endDate
          AND BuniessDateTime2 BETWEEN @startDate AND @endDate
          AND BuniessStatus1 = 55
          AND BuniessStatus2 = 66;
    
         SELECT OtherColumn2,
           BuniessStatus1,
           BuniessStatus2,
           BuniessDateTime1,
           BuniessDateTime2
    FROM BusinessInfoTable WITH(INDEX(IDX_2))
    WHERE BuniessDateTime1 BETWEEN @startDate AND @endDate
          AND BuniessDateTime2 BETWEEN @startDate AND @endDate
          AND BuniessStatus1 = 55
          AND BuniessStatus2 = 66;
    

    2
    看看IO情况

    3

    4

    原因分析:
      看来是有点差别吧,好似乎这个差别还真不小。
      究竟原因在何?
      索引是以平衡树(B树)的方式存在的,复合索引的列的顺序决定了B树的信息的存储的顺序
      如果是以BuniessStatus1列为前导列,因为BuniessStatus1分布的范围(相对)较小,
      这样在查询的时候通过BuniessStatus1=55就可以过滤出来一个比较小的结果集,后面依次用其他条件过滤就相对较快了
      比如BuniessStatus1=55过滤出来符合条件的数据有5条,加上BuniessStatus2 BuniessDateTime1 BuniessDateTime2 这三个条件再过滤,出来一条数据。
      如果BuniessDateTime1 是索引的前导列,用BuniessDateTime1 between @startDate and @endDate 过滤 ,可能会有10000条数据,
      然后依次再用 BuniessDateTime2,BuniessStatus1, BuniessStatus2过滤,最后也只有一条符合条件的数据。
      差别就在于:一开始的过滤条件,决定了查询多少page初步确定满足条件的数据,再进一步的进行过滤
      如果最开始就相对精确地确定了满足查询条件的数据范围,后面可以通过相对较小的代价来最终确认出满足条件的数据
      如果最开始相对模糊地却确定了满足查询条件的数据范围,那么这个过程的代价就相对比较大,虽然后面通过每一个条件的过,结果是一样的
      当然这种索引的建立跟数据分布有关,但是,这里没有下结论说,复合索引一定要按照什么什么顺序来是最好的
      还是那句话:具体问题具体分析,避免经验主义,没有一刀切的手段可以解决所有的问题。

    总结:
      本文通过一个简单的例子,分析了创建符合索引时,列的顺序对查询的影响,
      说明在创建索引的时候,不仅仅要考虑在哪些列上创建索引,同时也要注意到,索引列的顺序,是否会对查询产生影响。
      避免一说到索引,就是“在查询条件上建索引”的暴力做法。

    展开全文
  • SQL语句-创建索引

    2014-10-23 09:48:26
    创建索引的实例说明: 索引重建:alter index index_id on table_name rebuild      语法: CREATE [索引类型] INDEX 索引名称 ON 表名(列名) WITH FILLFACTOR = 填充因子值0~...
    创建索引的实例说明:
    索引重建:alter index index_id on table_name rebuild 
     

     

    语法:

    CREATE [索引类型] INDEX 索引名称

    ON 表名(列名)

    WITH FILLFACTOR = 填充因子值0~100

    GO

     

    USE 库名

    GO

    IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引

    DROP INDEX TEST.IX_TEST_TNAME--如果存在则删除

    --创建索引

    CREATE NONCLUSTERED INDEX IX_TEST_TNAME --创建一个非聚集索引

    ON TEST(TNAME)  --为TEST表的TNAME字段创建索引

    WITH FILLFACTOR = 30 --填充因子为30%

    GO

    SELECT * FROM TEST(INDEX = IX_TEST_TNAME) WHERE TNAME = 'A' --指定按‘IX_TEST_TNAME’索引查询

    总结:

          1.什么是索引:数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

      2.分类:

        唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引)

         主键索引:主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引)

         聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引

         非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引

        3.创建索引的标准:用语频繁搜索的列;用语对数据进行排序的列

    注意:如果表中仅有几行,或列中只包含几个不同的值,不推荐创建索引,因为SQL Server 在小型表中用索引搜索数据所花的时间比逐行搜索更长。

     

    ########################################################

    以下是对索引的理解:

    ************************************************************************************

    在SQL Server 中创建索引的方法

    ***********************************************************************************

        创建索引的方法:

    1.利用企业管理器中的索引向导创建索引。

    2.利用企业管理器直接创建索引。

    3.利用Transact-SQL语句中的CREATE INDEX命令创建索引。

    4.利用企业管理器中的索引优化向导创建索引。

        一. 利用索引向导创建索引(略)

        二. 利用企业管理器直接创建索引

    其具体步骤如下:

    1.在企业管理器中,展开指定的服务器和数据库,选择要创建索引的表,用右键单击该表,从弹出的快捷菜单中选择所有任务项的管理索引选项,就会出现管理索引对话框。在该对话框中,可以选择要处理的数据库和表 。

    2.单击“新建”按钮,则出现新建索引对话框.

    3.选择完成后单击“确定”按钮,即可生成新的索引;单击“取消”按钮,则取消新建索引的操作。

        三. 利用Transact-SQL语句中的CREATE INDEX命令创建索引

    其语法形式如下:

    CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED ]

    INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )

    [with

    [PAD_INDEX]

    [[,]FILLFACTOR=fillfactor][[,]IGNORE_DUP_KEY]

    [[,]DROP_EXISTING]

          [[,]STATISTICS_NORECOMPUTE]

    [[,]SORT_IN_TEMPDB]

    ]

    [ ON filegroup ]

        CREATE INDEX命令创建索引各参数说明如下:

    UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。

    CLUSTERED:用于指定创建的索引为聚集索引。

    NONCLUSTERED:用于指定创建的索引为非聚集索引。

    index_name:用于指定所创建的索引的名称。

    table:用于指定创建索引的表的名称。

    view:用于指定创建索引的视图的名称。

    ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。

    Column:用于指定被索引的列。

    PAD_INDEX:用于指定索引中间级中每个页(节点)上保持开放的空间。

    FILLFACTOR = fillfactor:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。

    IGNORE_DUP_KEY:用于控制当往包含于一个唯一聚集索引中的列中插入重复数据时SQL Server所作的反应。

    DROP_EXISTING:用于指定应删除并重新创建已命名的先前存在的聚集索引或者非聚集索引。

    STATISTICS_NORECOMPUTE:用于指定过期的索引统计不会自动重新计算。

    SORT_IN_TEMPDB:用于指定创建索引时的中间排序结果将存储在 tempdb 数据库中。

    ON filegroup:用于指定存放索引的文件组。

    例子:为表employees创建了一个唯一聚集索引,其程序清单如下:

    CREATE UNIQUE CLUSTERED INDEX number_ind

       ON employees (number)

    with

       pad_index,

       fillfactor=20,

       ignore_dup_key,

       drop_existing,

       statistics_norecompute

    例子:

    为表employees创建了一个复合索引,其程序清单如下:

    create index employees_cpl_ind

    on employees(name,age)

    with

       pad_index,

       fillfactor=50

        四. 利用索引优化向导创建索引

      索引优化向导可以完成以下几方面的工作:

    1.根据给定的工作负荷,通过使用查询优化器分析该工作负荷中的查询,为数据库推荐最佳索引组合。

    2.分析所建议的更改将会产生的影响,包括索引的使用,查询在表之间的分布,以及查询在工作负荷中的性能。

    3.推荐为执行一个小型的问题查询集而对数据库进行优化的方法。

    4.通过设定高级选项如磁盘空间约束、最大查询语句数和每个索引最多对应字段数等,允许定制推荐方式

    展开全文
  • Access数据库创建复合索引

    千次阅读 2009-10-16 00:52:00
    Access数据库创建复合索引 用Access习惯了傻瓜式用鼠标点来点去,发现不能用鼠标创建复合索引,但SQL语句还是可以的: create unique index 索引名 on 表名(字段1,字段2) OK!

    Access数据库创建复合索引

    用Access习惯了傻瓜式用鼠标点来点去,发现不能用鼠标创建复合索引,但SQL语句还是可以的:
    create unique index 索引名 on 表名(字段1,字段2)

    OK!

    展开全文
  • Sql Server 创建索引 、复合索引

    千次阅读 2017-03-05 17:19:56
    肯定就要想办法优化,方法就是建复合索引,这样在复杂的sql中更加容易被撞上索引覆盖。 比如下面这样: 1 SET STATISTICS IO ON 2 SELECT OrderStatus, ProcessStatus, SendTicketCity, ...
  • MySQL创建复合索引

    千次阅读 2016-01-29 10:30:01
    在MySQL数据库中,创建复合索引的时候,不知道在创建过程中哪个列在前面,哪个列该在后面,用以下方式即可: select count(distinct first_name)/count(*) as first_name_selectivity, count(distinct last_...
  • 复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。 建设原则:  1、索引应该经常建在Where 子句经常用到的列上。...
  • MySQL建立索引SQL语句

    千次阅读 2019-12-26 15:11:25
    1. 主键索引创建表时自动创建 { 聚集索引:一个表中只有一个聚集索引 } 2. 唯一索引:CREATE UNIQUE INDEX unique_index_warn[索引名称]ON cas_alarm[表名](warn_id[列名]) 3. 普通索引:CREATE INDEX index_...
  • 使用SQL语句创建及使用SQLServer数据库

    万次阅读 多人点赞 2017-02-03 22:36:34
    SQL语言在SQL Sever中的应用 1. 数据库的建立  在企业管理器中,建立教务数据库——EDUCATION。  1截图    2说明  在导航中的数据库上右键,新建数据库。  填写数据库名称:EDUCATION。  除了文件...
  •  客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急剧下降,小型机idle所剩无几,应用服务器断连、超时,严重影响业务的正常运行。因此,称低效的SQL语句...
  • SQL Server的复合索引学习

    千次阅读 2017-10-11 16:26:05
    概要什么是单一索引,什么又是复合索引呢?...复合索引创建方法与创建单一索引的方法完全一样。但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引。当表的行数远远大于索引键的数目时
  • sql语句创建主键

    千次阅读 2016-09-26 11:39:07
    对于有数据的表,在企业管理器里面创建索引时,容易超时,使用sql语句只要在,工具-选项设置超时值为0,就不会超时。 在已有表里创建主键:alter table t_inputdata add constraint PK_t_inputdata primary key...
  • 教你创建Oracle复合索引(精)

    万次阅读 2018-11-13 20:43:39
    什么是复合索引复合索引顾名思义,区别于单列索引,是由两个或多个列一起构成的索引。其在B树上的数据结构是什么样?如下图,是一个包含两列的复合索引。 如果你观察仔细,还会发现它的叶子节点是ASC递增排序的...
  • 创建索引原则及SQL添加索引

    万次阅读 2018-08-14 10:40:07
    检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。  3.尝试建立复合索引来进一步提高系统性能。修改复合索引将消耗更长时间,同时,复合索引也占磁盘空间。  4.对于小型的表,建立索引可能会影响...
  • SQL语句(五) 索引建立

    万次阅读 2018-07-16 16:59:42
    1.创建唯一性索引 SET STATISTICS TIME ON SELECT * FROM customer WHERE name ='阿爆' ; SET STATISTICS TIME OFF CREATE UNIQUE INDEX customer_name ON customer(name);--在customer表上的name列创建唯一性索引 ...
  • SQL语句优化

    千次阅读 2019-06-07 20:27:17
    在SQL的查询过程,有时候为了提高查询效率,我们时常会对SQL语句进行优化,下面就给大家分享一下SQL优化方法: 1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引,但是...
  • Sql联合索引语句

    2020-05-27 15:17:55
    use t0netcoresystem; alter table stockpools add unique index(AccountName, StockCode, TradeDate);
  • 1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况 p4: 2.4 内存: 1 G os: windows 2003 数据库: ms sql server 2000 目的: 查询性能测试,比较两种查询的性能 SQL查询效率 step by step -- setp 1. ...
  • sql复合索引使用和注意事项

    千次阅读 2018-05-31 13:16:26
    复合索引的优点和注意事项 概念: 单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上; 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引); 复合索引在数据库操作期间所需的开销更小,可以...
  • 一条SQL语句的执行流程及索引优化

    千次阅读 2020-12-16 22:05:31
    文章目录一、总览1.1 MySQL架构1.2 SQL语句的执行流程二、各组件的功能2.1 连接器2.2 分析器2.3 优化器2.4 执行器三、语句分析四、索引是如何起作用的五、索引的优化 一、总览 1.1 MySQL架构 1.2 SQL语句的执行流程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,737
精华内容 15,094
关键字:

创建复合索引的sql语句