1

所以我有一个用户表;存储用户名、电子邮件等内容。然后我有一个 user_settings 表。我将其组织为键/值组合,而不是像 timestamp_logged_in、profile_views 等标准列。例如,这些列是:

user_settings_ID user_ID 名称值

示例记录为:82 2 'timestamp_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 是基于某个值类型实现的(例如,强制它将排序列视为字符串、整数、日期时间、时间戳等)?

任何想法都会非常感激。谢谢。奥利弗·纳萨尔

4

2 回答 2

3

您必须手动其转换为正确的数据类型。

如果您希望表变大,像这样存储为键值对,虽然一开始这似乎是个好主意,但最终总是会以非常糟糕的性能结束,因为您无法创建有用的索引。现在考虑而不是以后改变。

于 2009-11-28T03:50:10.423 回答
0

为什么不将数据存储在“可排序的”字符串表示中……“预转换为可排序的格式”

而不是 '11-28-2009 11:45' 您可以将其存储为 '2009.11.28 11:45'

MySQL 具有将类型转换回“中间件”中的“日期时间”或“日期”所需的功能。

于 2009-11-28T05:04:23.427 回答