Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多列索引效率 为了提高这个查询的性能,我应该创建索引(b,c)和索引(c,b),还是第一个索引就足够了 据我所知,索引(b,c,a)可能会进一步提高性能,但前提是(b,c,a)比(b,c)更独特。对吗 SQL问题是否属于dba.stackexchange站点_Sql_Performance_Oracle_Indexing - Fatal编程技术网

多列索引效率 为了提高这个查询的性能,我应该创建索引(b,c)和索引(c,b),还是第一个索引就足够了 据我所知,索引(b,c,a)可能会进一步提高性能,但前提是(b,c,a)比(b,c)更独特。对吗 SQL问题是否属于dba.stackexchange站点

多列索引效率 为了提高这个查询的性能,我应该创建索引(b,c)和索引(c,b),还是第一个索引就足够了 据我所知,索引(b,c,a)可能会进一步提高性能,但前提是(b,c,a)比(b,c)更独特。对吗 SQL问题是否属于dba.stackexchange站点,sql,performance,oracle,indexing,Sql,Performance,Oracle,Indexing,两列上只需要一个索引。两者中哪一个更好取决于表的结构和将使用它的查询,但通常与组合索引的顺序没有显著差异 覆盖查询中使用的所有列的索引称为覆盖索引。它可以提高性能,但除非表有很多列或非常大,否则通常不会产生显著差异。它可以更快的原因是,它不必在找到索引中的条目后再去数据,只需使用索引,而不需要查看数据,因为它需要的一切都在索引中 有些问题更适合dba,但这个问题在这里很好。这甚至可能已经迁移到这里,因为它不是很专业 对于前两部分,总体思路是“视情况而定”。在您的情况下,由于您可能没有处理大量数据

两列上只需要一个索引。两者中哪一个更好取决于表的结构和将使用它的查询,但通常与组合索引的顺序没有显著差异

  • 覆盖查询中使用的所有列的索引称为覆盖索引。它可以提高性能,但除非表有很多列或非常大,否则通常不会产生显著差异。它可以更快的原因是,它不必在找到索引中的条目后再去数据,只需使用索引,而不需要查看数据,因为它需要的一切都在索引中

  • 有些问题更适合dba,但这个问题在这里很好。这甚至可能已经迁移到这里,因为它不是很专业

  • 对于前两部分,总体思路是“视情况而定”。在您的情况下,由于您可能没有处理大量数据,所以您选择哪种方式可能不会产生重大影响;一个表中可能需要至少10MB的数据才能有明显的差异

    1.为了提高这个查询的性能,我应该创建索引(b,c)和索引(c,b),还是第一个索引就足够了

    您不需要同时创建两个索引。如果用于执行查询,则这两种查询中的任何一种都可以同等地提高此类查询的效率(具有
    条件,其中b=1和c=2
    条件)。是否使用它以及是否提高性能取决于索引的选择性

    2.据我所知,索引(b,c,a)可能会进一步提高性能,但前提是(b,c,a)比(b,c)更独特。对吗

    对。在
    (b,c,a)
    上的索引(或在
    (c,b,a)
    上的索引同样好)将提高性能。与选择性无关。读取索引(以及所有索引中的同一位置)不可能比读取(b,c)索引,然后从一个(可能更宽)表中的一行和另一行获取
    a
    列数据更糟糕

    (b,c)
    的选择性,例如查询返回的行数,将影响效率的提高程度,
    (b,c,a)
    索引将为您提供帮助。如果查询返回几十行,差异将很小。如果查询返回数百万个表中的数千行,改进将很高,因为所有数据都将从(覆盖)索引中读取

    3.SQL问题是否属于dba.stackexchange站点


    这是元站点的一个问题,无论是主站点还是DBA.SE元站点。

    您使用的是哪种RDBMS?如果您是这样问的,我使用的是Oracle。
    select a
    from t
    where b = 1 and c = 2