我有一个疑问。它需要 1100 毫秒,我认为不应该。
select * from PageInfo where url = @url OR url like @url2
Run Code Online (Sandbox Code Playgroud)
网址是/sub/id和/sub2/id/thing。我在 上有一个索引pageinfo(url)。页面的主体大约是 10k,这个示例为 2 行(<20k)提供了 1120 毫秒。花了这么长时间感觉不对。我应该能够在更短的时间内通过网络获取这两个页面。
我能做些什么来加快速度?我有一个索引,我不知道我还能做什么。
使用like将阻止使用索引。
相比
sqlite> explain query plan select * from PageInfo where url = @url OR url like @url2;
0|0|0|SCAN TABLE PageInfo (~500000 rows)
sqlite>
Run Code Online (Sandbox Code Playgroud)
到
sqlite> explain query plan select * from PageInfo where url = @url OR url between @url2 and @url3;
0|0|0|SEARCH TABLE PageInfo USING INDEX pi (url=?) (~10 rows)
0|0|0|SEARCH TABLE PageInfo USING INDEX pi (url>? AND url<?) (~31250 rows)
sqlite>
Run Code Online (Sandbox Code Playgroud)
您应该使用between和构造查询的参数@url2,@url3例如
/sub2/1234/thing?page=0
Run Code Online (Sandbox Code Playgroud)
和
/sub2/1234/thing?page=99999999
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1549 次 |
| 最近记录: |