我有一个非常简单的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
页面有时加载速度快,有时速度慢。有时,只有一半的表填充然后它只是旋转直到刷新。
谢谢!
答案 0 :(得分:0)
桌子有多大?你有多少次请求它?
您可能想要创建一个索引,以便快速查找令牌。现在,它必须扫描整个表以找到其令牌与您的参数匹配的第一行。
CREATE INDEX IX_config_token ON config (token)
通常,查询表的每种不同方式都可能会受益于该查询的索引,因此实际上每个表最终会有多个索引。
例如,如果我有一个People
表,其中包含City
和FirstName
列,并且我想要满足这三个查询案例:
然后我需要三个单独的索引:
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中的人并拥有FirstName Y;它仍然比扫描整个桌子更好,但它仍然不理想。