所以我有一个用户表;存储用户名,电子邮件等内容 然后我有一个user_settings表。而不是像timestamp_logged_in,profile_views等标准列,我把它组织为键/值组合。例如,列是:
user_settings_ID user_ID名称值
示例记录将是: 82 2'tiststamp_logged_in''2009-10-10 02:23:53'
这使得设置更具渗透性。我不需要存在用于存储新用户设置类型的列。我担心这样做(将每个值存储为字符串,并将其转换为中间件中的相应类型)将使得难以排序。因此,例如,如果我想按上次登录的顺序获取用户列表,则排序将需要sql调用,例如:
SELECT user_ID FROM user.settings WHERE status ='open'AND name ='timestamp_logged_in'ORDER BY name
但是,这会将找到的记录排序为字符串。有没有办法确保基于某种值类型实现排序算法mysql(例如,强制它将排序列视为字符串,整数,日期时间,时间戳等)?
任何想法都会受到赞赏。 谢谢。 奥利弗·纳萨尔
答案 0 :(得分:3)
您必须手动cast它到正确的数据类型。
如果你希望表变大,那么像这样存储键值对,虽然它在开始时似乎是一个好主意,但总是会出现非常糟糕的性能,因为你无法创建有用的索引。现在考虑一下,而不是稍后改变。
答案 1 :(得分:0)
为什么不将数据存储在“可排序的”字符串表示中..“预转换为可排序的格式”
而不是'11 -28-2009 11:45'你可以把它存储为'2009.11.28 11:45'
MySQL具有在“中间件”中回溯到“日期时间”或“日期”所需的功能。