Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance sqlite:宽v。长期性能_Performance_Sqlite - Fatal编程技术网

Performance sqlite:宽v。长期性能

Performance sqlite:宽v。长期性能,performance,sqlite,Performance,Sqlite,我正在考虑是否应该将sqlite数据库中的表格式化为“宽”格式或“长”格式 我预计我的大部分请求将采用以下形式: SELECT * FROM table WHERE series in (series1, series100); 或模拟,以宽格式按列选择 我还预计,将有大量的列,甚至足以需要增加 对于这种情况,是否有选择表布局以优化查询性能的一般指导原则 (每个示例) “宽”格式: “长”格式: 出于许多原因,“长”格式是这里的首选方式如果需要添加更多系列,则必须向数据库表中添加新列。虽然

我正在考虑是否应该将sqlite数据库中的表格式化为“宽”格式或“长”格式

我预计我的大部分请求将采用以下形式:

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;