- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 hibernate 时有一个关于数据库结构的问题。
我必须在数据库中保存每天的信息(一个数字)。很多时候我需要选择一整月的信息。
当我得到一张包含(日期、信息)的表格时,我必须执行最多 31 次选择才能获取一个月的数据。由于我经常这样做,它会给数据库带来压力。
现在我想将整个信息(31个数字)写入月表,其中一列“月”和另一列“信息”,其中我放入所有数字,并用“;”分隔。那么我只需要做一项选择。但我必须拆分数据记录才能获取数字(按每个“;”拆分)。
也许,另一个解决方案是月表,有 32 列(月份和 1 到 31)。 1 到 31 列将是tinyints,我将在其中存储数字。我必须做出一个选择来获取每个月的数据,并且我不必拆分数据记录,但可以请求每列的数据(我使用 hibernate )
最后一个解决方案有什么我没有想到的缺点吗? :-) 您会推荐另一种解决方案吗?
[编辑]感谢您的帮助。这是之前的数据结构:
create table CLIENTS_DATA (
client_id int UNSIGNED NOT NULL,
datum date NOT NULL,
information tinyint UNSIGNED NOT NULL default 0,
** additional informations **
primary key(client_id, datum),
foreign key(client_id) references clients(id) ON DELETE CASCADE ON UPDATE CASCADE)
ENGINE=InnoDB;
我现在将整整一个月的信息存储在:
create table CLIENTS_MONTHLY_INFORMATIONS (
client_id int UNSIGNED NOT NULL,
datum date NOT NULL,
i1 tinyint NOT NULL default 0,
i2 tinyint NOT NULL default 0,
i3 tinyint NOT NULL default 0,
i4 tinyint NOT NULL default 0,
i5 tinyint NOT NULL default 0,
i6 tinyint NOT NULL default 0,
i7 tinyint NOT NULL default 0,
i8 tinyint NOT NULL default 0,
i9 tinyint NOT NULL default 0,
i10 tinyint NOT NULL default 0,
i11 tinyint NOT NULL default 0,
i12 tinyint NOT NULL default 0,
i13 tinyint NOT NULL default 0,
i14 tinyint NOT NULL default 0,
i15 tinyint NOT NULL default 0,
i16 tinyint NOT NULL default 0,
i17 tinyint NOT NULL default 0,
i18 tinyint NOT NULL default 0,
i19 tinyint NOT NULL default 0,
i20 tinyint NOT NULL default 0,
i21 tinyint NOT NULL default 0,
i22 tinyint NOT NULL default 0,
i23 tinyint NOT NULL default 0,
i24 tinyint NOT NULL default 0,
i25 tinyint NOT NULL default 0,
i26 tinyint NOT NULL default 0,
i27 tinyint NOT NULL default 0,
i28 tinyint NOT NULL default 0,
i29 tinyint NOT NULL default 0,
i30 tinyint NOT NULL default 0,
i31 tinyint NOT NULL default 0,
average float UNSIGNED,
primary key(client_id, datum),
foreign key(client_id) references clients(id) ON DELETE CASCADE ON UPDATE CASCADE)
ENGINE=InnoDB;
对第二个表的查询将是:
public ClientsMonthlyInformations getClientsMonthlyInformationsByIdAndDate(int uid, Date datum) {
ClientsMonthlyInformations cmi = (ClientsMonthlyInformations) this.sessionFactory.getCurrentSession().createQuery("from ClientsMonthlyInformations clientsmonthlyinformations where clientsmonthlyinformations.clients.id=:clientsid and clientsmonthlyinformations.datum=:date").setParameter("clientsid", uid).setParameter("date", datum).uniqueResult();
return cmi;
}
为了从第一个表中获取数据,我使用相同的条目,但当然是 ClientsData 而不是 ClientsMonthlyInformation。你是对的,我可以创建一个查询来获取 31 个数据记录,这意味着 31 个 Hibernate 对象。我不知道为什么我认为对 31 行进行一次选择来获取 31 个对象会很糟糕。
最佳答案
have to do up to 31 selects to get the data for one month. As I do this very often, it stresses the database
经常定义?您目前还有几天时间?除非每秒超过 20 次,否则不会对数据库产生任何可测量的影响。
Now I thought of writing the whole information (31 numbers) into a MONTH-table
这是一个非常愚蠢的想法,并且不能解决问题。
如果您必须发出 31 个选择才能获取一个月的数据,那么您确实需要了解有关查询数据库的更多信息。
如果不知道您的表结构是什么,也不知道您需要的输出格式是什么,就不可能提供具体的解决方案,但您可以考虑:
SELECT DATE_FORMAT(a.date, '%Y-%m'), GROUP_CONCAT(metric)
FROM (
SELECT a.date, a.metric
FROM your_table a
WHERE a.date>20110101000000
ORDER BY a.date
)
GROUP BY DATE_FORMAT(a.date, '%Y-%m');
(假设您希望以非规范化结构输出 - 并且绝对确定没有丢失/重复的日期)
关于mysql - 如何构建 mysql 表以尽可能减少对数据库的压力(使用 hibernate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6073933/
我是 Bison 解析的新手,我无法理解它是如何工作的。我有以下语法,其中我保留了最低限度的语法来突出问题。 %left '~' %left '+' %token T_VARIABLE %% star
我链接了 2 个映射器和 1 个缩减器。是否可以将中间输出(链中每个映射器的 o/p)写入 HDFS?我尝试为每个设置 OutputPath,但它似乎不起作用。现在,我不确定是否可以完成。有什么建议吗
我正在编写一些代码来管理自定义磁盘文件结构并将其同步到未连接的系统。我的要求之一是能够在实际生成同步内容之前估计同步的大小。作为一个简单的解决方案,我整理了一个包含完整路径文件名的 map ,作为高效
我来自一个 SQL 世界,其中查找由多个对象属性(published = TRUE 或 user_id = X)完成,并且有 任何地方都没有加入 (因为 1:1 缓存层)。文档数据库似乎很适合我的数据
在 R 中,我有一个整数向量。从这个向量中,我想随机减少每个整数元素的值,以获得向量的总和,即初始总和的百分比。 在这个例子中,我想将向量“x”减少到向量“y”,其中每个元素都被随机减少以获得等于初始
我发现自己遇到过几次我有一个 reducer /组合 fn 的情况,如下所示: def combiner(a: String, b: String): Either[String, String]
Ubuntu 12.04 nginx 1.2.4 avconv版本 avconv version 0.8.10-4:0.8.10-0ubuntu0.12.04.1, Copyright (c) 200
我是 R 编程语言的新手。我有一个包含 2 列(ID 和 Num)的数据集,如下所示: ID Num 3 8 3 12 4 15 4 18 4
我正在使用高阶函数将函数应用于向量中的每个元素并将结果作为标量值返回。 假设我有: v = c(0, 1, 2, 3, 4, 5, 6, 7, 8) 我想计算以左边 5 个整数为中心的所有这些整数的总
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
这个问题在这里已经有了答案: How to write the dataframes in a list to a single csv file (2 个回答) 5年前关闭。 我正在尝试使用 Red
刚开始学习CUDA编程,对归约有些迷茫。 我知道与共享内存相比,全局内存有很多访问延迟,但我可以使用全局内存来(至少)模拟类似于共享内存的行为吗? 例如,我想对长度恰好为 BLOCK_SIZE * T
我经常使用OptiPNG或pngcrush减小PNG图像的文件大小。 我希望能够从.NET应用程序中以编程方式执行此类操作。我正在动态生成要发送到移动设备的PNG,因此我想减小文件大小。 图像质量很重
减少和减少让您在序列上累积状态。 序列中的每个元素都会修改累积的状态,直到 到达序列的末尾。 在无限列表上调用reduce 或reductions 有什么含义? (def c (cycle [0]))
这与R: use the newly generated data in the previous row有关 我意识到我面临的实际问题比我在上面的线程中给出的示例要复杂一些 - 似乎我必须将 3 个
有什么办法可以减少.ttf字体的大小?即如果我们要删除一些我们不使用的glyps。 最佳答案 使用Google Web Fonts,您可以限制字符集,例如: //fonts.googleapis.co
我需要在iOS中制作一个应用程序,在她的工作过程中发出类似“哔”的声音。 我已经使用MPMusicPlayerController实现了与背景ipod的交互。 问题: 由于来自ipod的音乐音量很大,
我有一个嵌套 map m,如下所示: m = Map("电子邮件"-> "a@b.com", "背景"-> Map("语言"-> "英语")) 我有一个数组arr = Array("backgroun
有什么原因为什么不应该转发map / reduce函数中收到的可写内容? 我的意思是-每个map / reduce函数都有一个可写的键/值,并可能发出一个键/值对。如果我想执行一些过滤,我应该只发出接
假设我有一个数据列表 val data = listOf("F 1", "D 2", "U 1", "D 3", "F 10") 我想执行每个元素的给定逻辑。 我必须在外部添加 var acc2 =
我是一名优秀的程序员,十分优秀!