Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Database design 使用PHP在查询后解析/正则表达式一个字段,还是在多个字段中存储分段数据?_Database Design_Performance - Fatal编程技术网

Database design 使用PHP在查询后解析/正则表达式一个字段,还是在多个字段中存储分段数据?

Database design 使用PHP在查询后解析/正则表达式一个字段,还是在多个字段中存储分段数据?,database-design,performance,Database Design,Performance,我是否应该计划解析/regex,例如,在使用PHP进行查询结果的while循环期间从数据库表的一个字段检索到的整个url字符串 或者我应该将数据段(目录、文件名、扩展名)存储在它们自己的单独字段中,并在查询结果的while循环中连接结果吗 假设在最坏的情况下,在速度和效率方面,最有效的总体方法是什么 MySQL和PHP是问题的疑点我的一般原则是,数据库中不应该有“复合”字段。我的意思是一列包含两个或更多的概念值 所以,如果您只对“filename”感兴趣,那么这是一个合理的单值列。然而,如果您经

我是否应该计划解析/regex,例如,在使用PHP进行查询结果的while循环期间从数据库表的一个字段检索到的整个url字符串

或者我应该将数据段(目录、文件名、扩展名)存储在它们自己的单独字段中,并在查询结果的while循环中连接结果吗

假设在最坏的情况下,在速度和效率方面,最有效的总体方法是什么


MySQL和PHP是问题的疑点

我的一般原则是,数据库中不应该有“复合”字段。我的意思是一列包含两个或更多的概念值

所以,如果您只对“filename”感兴趣,那么这是一个合理的单值列。然而,如果您经常关心文件扩展名、路径和其他数据,那么您应该将它们存储在三列(或更多列)中


也许我看到的最糟糕的例子是,人们用逗号内爆一个数组,然后将其存储在一列中。

我同意你的看法。。考虑到插入查询而不是选择查询所涉及的额外工作,您还会坚持这个答案吗?这是故事的另一面,但对最初的设计同样有影响……要么设置存储过程,要么写出整个insert/update语句。以及在插入/更新语句之前正在进行的解析run@Cheese我不太明白。如果需要文件扩展名等,请分别存储它们。选择很简单:只需连接各个部分。插入很简单,因为将文件名解析到它的各个部分也很简单。我在数据库中也不会这样做(使用存储的进程等)。。。您可能需要在将其发送到表之前将其拆分,或者设置一个存储过程来执行相同的操作。。。或者你可以把它完整地存储起来,然后在需要的地方将它分解成几部分+1,在我的书中,拆分对系统来说更耗时,你必须解析字符串,将其拆分,等等。将字符串连接在一起对系统来说几乎是零。因此,您是希望在插入之前拆分字符串一次,还是每次加载数据时拆分字符串?对我来说不需要动脑筋。如果需要查看链接的某些部分,请将它们保存下来,如果需要搜索链接的某些部分,这将有所帮助。