Performance sqlite:宽v。长期性能
我正在考虑是否应该将sqlite数据库中的表格式化为“宽”格式或“长”格式 我预计我的大部分请求将采用以下形式:Performance sqlite:宽v。长期性能,performance,sqlite,Performance,Sqlite,我正在考虑是否应该将sqlite数据库中的表格式化为“宽”格式或“长”格式 我预计我的大部分请求将采用以下形式: SELECT * FROM table WHERE series in (series1, series100); 或模拟,以宽格式按列选择 我还预计,将有大量的列,甚至足以需要增加 对于这种情况,是否有选择表布局以优化查询性能的一般指导原则 (每个示例) “宽”格式: “长”格式: 出于许多原因,“长”格式是这里的首选方式如果需要添加更多系列,则必须向数据库表中添加新列。虽然
SELECT * FROM table
WHERE
series in (series1, series100);
或模拟,以宽格式按列选择
我还预计,将有大量的列,甚至足以需要增加
对于这种情况,是否有选择表布局以优化查询性能的一般指导原则
(每个示例)
“宽”格式:
“长”格式:
出于许多原因,“长”格式是这里的首选方式如果需要添加更多系列,则必须向数据库表中添加新列。虽然这并不太麻烦,但通常在将模式投入生产后,您希望避免进一步的模式更改
其次,“长”格式使报告和查询更容易。例如,假设您希望获得每个系列的行数/数据点数。那么您只需要以下内容:
SELECT series, COUNT(*) AS cnt
FROM yourTable
GROUP BY series;
要获得具有“宽”格式的报告,您将需要更多的代码,并且它将与上面的示例数据一样详细
这里需要记住的是,SQL数据库的构建是为了对记录集进行操作(读取:跨行)。它们也可以按列处理事情,但它们通常不会这样做。出于许多原因,“长”格式是这里的首选方式。首先,如果使用“宽”格式,并且需要添加更多的系列,则必须向数据库表中添加新列。虽然这并不太麻烦,但通常在将模式投入生产后,您希望避免进一步的模式更改
其次,“长”格式使报告和查询更容易。例如,假设您希望获得每个系列的行数/数据点数。那么您只需要以下内容:
SELECT series, COUNT(*) AS cnt
FROM yourTable
GROUP BY series;
要获得具有“宽”格式的报告,您将需要更多的代码,并且它将与上面的示例数据一样详细
这里需要记住的是,SQL数据库的构建是为了对记录集进行操作(读取:跨行)。他们也可以按列处理事情,但他们通常不会这样做
SELECT series, COUNT(*) AS cnt
FROM yourTable
GROUP BY series;