优化此sqlite数据库的最佳方法

时间:2015-10-29 12:19:07

标签: sqlite

我有一个sqlite数据库包含一个具有此结构的表

CREATE TABLE stats (
    day_date          DATE     NOT NULL,
    listing_id        INT (10) NOT NULL,
    cat_id            INT (4)  DEFAULT (0),
    source_id         INT (4)  DEFAULT (0),
    views             INT (8)  NOT NULL
                               DEFAULT (0),
    views_counter     INT (8)  NOT NULL
                               DEFAULT (0),
    bot_views         INT (8)  NOT NULL
                               DEFAULT (0),
    bot_views_counter INT (8)  DEFAULT (0) 
                               NOT NULL,
    PRIMARY KEY (
        day_date
    )
);

and this is the file

这个数据库可能包含500,000行,所以我想制作一些索引来快速查询

我在这个数据库上使用的查询是

SELECT listing_id,SUM(views) AS total_views
FROM stats
WHERE day_date IN("11-10-2015","12-10-2015","13-10-2015","14-10-2015",
                  "15-10-2015","16-10-2015","17-10-2015")
group by listing_id
ORDER BY total_views DESC 

我使用day_date上的范围来获得一天,一周的时间,

我有一些想法,如何制作一个名为'周'包含一年中的周数并在其上添加索引,所以如果我想要一天,我将只使用day_date上的一个值,如果我想要一周,我将使用week列...是正确?

2 个答案:

答案 0 :(得分:1)

如果您使用correct date format,则无需枚举本周的所有日期,并且可以在日期列中使用简单索引:

WebBrowsers.Navigate(filePath)

答案 1 :(得分:1)

我从不使用DATE格式。我只使用TEXT,如2015年10月29日的“20151029223007”,22小时30分07秒。订购和比较简单快捷。

然后,你可以写:

SELECT listing_id,SUM(views) AS total_views
FROM stats
WHERE day_date > "20151010" and day_date < "20151018"
group by listing_id
ORDER BY total_views DESC