我做了一些研究,但未能找到明确的答案。
在性能方面更好。
注意:只有 10 个可能的标签,最大长度为 160 个字符(如果全部选择)。
ONE table 包含 3 列:id、stuff、tags ... 其中标签列将是一个 varchar
并像这样查询:SELECT * FROM table WHERE tags LIKE %tagname%
或
两个表:
tableA columns = id, stuff
tableB columns = id, tag
然后像这样查询:SELECT * FROM tableA A INNER JOIN tableB B ON A.id = B.id WHERE B.tag = 'tagname'
插图——
tableA 中的行看起来像:123 |一些数据
tableB 中的行看起来像:123 |标记名
我只是想问如果没有很多标签,就性能而言,将标签存储在一行中还是在单独的表中更好。
最佳答案
What is better, in terms of performance.
Donald Knuth 曾说过“过早的优化是万恶之源。”据了解,据了解,他是在表达人们通常不应该为 构建东西性能,而不是正确性,然后才进行优化以使应用程序符合性能要求。
您的性能要求是什么?有些人可能希望最小化内存使用;其他人可能希望最小化 CPU 时间;其他人仍然可能通过“性能”来表示完全不同的东西。
即使假设您的意思是“哪个操作最快”,答案通常取决于各种因素,包括磁盘技术、存储引擎、索引设计、表大小...
那么,你应该怎么做呢? 正常化直到疼痛为止;去规范化直到它起作用。
您的第一种方法违反了 1NF .不要这样做,除非你有一些压倒一切的理由(你几乎不会这样做)。
关于php - SQL JOIN vs LIKE(数据存储在行中而不是另一个表中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22938989/