sqlite - 加快某些 SQLite 数据的加载时间

标签 sqlite

我有一个非常简单的 sqlite 表:

CREATE TABLE config (id INTEGER primary key, 
                     token VARCHAR(255),
                     value TEXT,
                     date DATETIME)

有时当网页抓取信息时,它会不停地旋转,但并非一直如此。其他静态页面在此服务器上快速加载。

我一直在研究索引数据。这是加快查询速度的最佳方法还是我应该做一些不同的事情?这可能是服务器问题吗?如果是这样,我该如何解决?

编辑:

我得到这样的数据:
SELECT value 
                  FROM config 
                  WHERE token='%s' 
                  ORDER BY id DESC
                  LIMIT 1

页面有时加载得快,有时加载得慢。有时,只有一半的表格填满,然后它只是旋转直到刷新。

谢谢!

最佳答案

table 有多大?你每秒处理多少个请求?

您可能希望创建一个索引,以便通过标记快速查找。现在,它必须扫描整个表以找到其标记与您的参数匹配的第一行。

 CREATE INDEX IX_config_token ON config (token)

通常,查询表的每一种不同方式都可能受益于仅针对该查询的索引,因此在实践中,您通常最终会为每个表创建多个索引。

例如,如果我有 People带有 City 的表和 FirstName列等,我想满足这三个查询案例:
  • 选择所有住在 X 市的人
  • 选择所有姓名为 Y
  • 的人
  • 选择所有居住在 X 市且名字为 Y 的人

  • 然后我需要三个单独的索引:
    CREATE INDEX IX_People_City ON People (City)
    CREATE INDEX IX_People_FirstName ON People (FirstName)
    CREATE INDEX IX_People_City_FirstName ON People (City, FirstName)
    

    如果我没有第三个索引,那么查询案例 #3 将使用第一个索引来查找所有居住在 X 市的人,然后必须手动扫描该索引以找到居住在 X 市并拥有名字 Y 的人;它仍然比扫描整个表要好,但仍然不理想。

    关于sqlite - 加快某些 SQLite 数据的加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17353845/

    相关文章:

    sqlite - 在Sqlite中添加基于类别的汇总行

    android - 将 .csv 文件导入 Android 中的 Sqlite

    php - MySQL从另一个表插入随机值

    ruby-on-rails - Heroku 数据库导入将时间列转换为文本列。可以做些什么吗?

    php - 如何与 PHP 一起在 mySQL 中添加值

    android - SQLite:无法打印所有行

    Python2.7 使用 format() 和 sqlite 的缓冲区对象生成 sql 查询

    sqlite - 在 SQLite 替换函数中使用 collat​​e nocase 的语法

    Android:如何增加 SQLite INTEGER PRIMARY KEY AUTOINCREMENT 列?

    c++ - 删除行后如何重新索引或修复rowid?sqlite?