java - 什么更有效率?使用 Regex 或在 mysql 中创建新列以获取相同信息

标签 java mysql regex performance jdbc

我是应用程序设计的新手,我正在尝试从设计和 future 可扩展性的角度进行思考。比方说,我们从三组人开始,他们互相写笔记更新。目前我的表格上的焦点部分有这样的列:

样本编号 |办公笔记 |实验室笔记 |账单注...

创建新条目时,我的 java 程序将此格式包含到每个 sampleId 以及它写入的任何注释类别中:

[MM/dd/yy HH:mm - user] userNote\r\n

现在,如果我想在我的 GUI 应用程序中生成一个概览表,以便任何团队都可以查看该注释并了解样本出现问题的原因。这个缩短的表格的格式类似于:

    Header: Office Note
----------
Sample Id | Date Created | User | First Line | Last Updated Line

Header: Billing Note
-------------------
Sample Id | Date Created | User | First Line | Last Updated Line

Header: Lab Note
-------------------
Sample Id | Date Created | User | First Line | Last Updated Line

知道最终表的结果是怎样的......是否明智地为每个注释组创建更多列以支持“创建日期”和“用户”?或者我会在 mysql 或 java 中制作一个正则表达式来解析第一个创建日期和用户。

让我知道我还能为这个问题提供什么。是的,一旦注释被解决,行就会被删除。

最佳答案

将它分成几列会更清晰。在我看来,如果您总是需要解析它,则应避免使用始终具有相同结构的字段。好像是在否定关系型数据库的使用。

此外,我还没有对其进行测试,但很可能使用正则表达式的性能明显较低。

更重要的是,您可以使用索引。例如,如果您需要显示与某个用户相关的记录或从确定的时间间隔开始,那么如果您分别在 User 字段和 Date Created< 上建立索引,速度会快得多.

最后,您将来可能需要进行复杂的查询,因此您必须直接在查询中使用正则表达式。这并不总是受支持!因此,您可能必须在您的 Java 代码中“完成”它,这很慢而且非常难看。即使您的数据库可以使用该功能,也不要忘记它会使它变得异常复杂和缓慢,因此它可能成为应用程序开发和维护的噩梦。

关于java - 什么更有效率?使用 Regex 或在 mysql 中创建新列以获取相同信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29828520/

相关文章:

MySQL 多个 CHAR_LENGTH()

javascript - 正则表达式 javascript 查找具有开始和结束模式的字符串

JavaScript/jQuery : quick way to retrieve numeric from length attributes

mysql - 正则表达式在 MySQL 查询中的每个表之前插入一个字符串

Java SWT ScrolledForm 背景颜色

java - 当代码从 R2007a 移动到 R2013a 时出现 NoClassDefFoundError

mysql - 我该如何执行这个选择语句?

php - 如何从数据库mysql中选择待处理的好友请求

java - 线性回归的梯度下降不起作用

java - 从 Java 代码调用 DLL 库方法/函数