2

我有一个非常简单的 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

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

谢谢!

4

1 回答 1

0

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

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

 CREATE INDEX IX_config_token ON config (token)

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

例如,如果我有一个People包含 aCityFirstName列等的表,并且我想满足这三个查询案例:

  1. 选择居住在 X 市的所有人
  2. 选择所有名字为 Y 的人
  3. 选择所有居住在 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 的人;它仍然比扫描整个表要好,但仍然不理想。

于 2013-06-27T23:46:20.127 回答