【问题标题】:SQLite : INSERT and ORDER in the same timeSQLite:同时插入和排序
【发布时间】:2010-07-27 10:43:18
【问题描述】:

我有一个包含 25.000 行的表格(带有字符串的列)。

我想改进我的选择查询。 "SELECT name FROM table WHERE name LIKE 'something' ORDER BY name LIMIT 15"

数据库将是静态的。

我想知道当我在表中插入一行时是否可以对列进行排序,如果表已经按名称排序,是否会减少选择查询的时间?

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    您的要求没有意义 - ORDER 子句仅适用于 SELECT,不适用于 INSERT 操作。 (例如,您会点什么?)

    如果您正在谈论构建某种形式的index,只要您指定名称列是index(理想情况下是在构建table 时),您就没有什么可以做的了- 由 RDBMS 系统的作者来处理其余部分。 (即:他们决定何时构建/更新索引等 - 你无法控制这一点。)

    【讨论】:

    • 请注意,聚集索引通常控制磁盘上数据的顺序,因此可能是他想要的——在名称列上声明聚集索引。尽管与任何优化一样,RDBMS 可能只是将其作为提示而不是对其采取行动。
    【解决方案2】:

    如果数据库是静态的,为什么还要使用它?只需在程序中对这 15 个名称进行硬编码。如果您的意思是表不会改变,那么为了改进您的查询,您可以在名称列名称上放置一个索引或使用更多的缓存。

    【讨论】:

      【解决方案3】:

      类似以下的方法会起作用:

      INSERT INTO TABLE1 (S1, S2, S3) SELECT S1, S2, S3 FROM TEMP ORDER BY S1, S2, S3
      

      这里的排序是在插入之前作为SELECT 语句的一部分完成的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-26
        • 1970-01-01
        • 1970-01-01
        • 2015-04-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多