gpt4 book ai didi

mysql - 在 MySQL 中查询大量动态配置文件的最有效方法是什么?

转载 作者:行者123 更新时间:2023-11-29 21:31:22 27 4
gpt4 key购买 nike

我有一个用户系统。每个用户都有一个个人资料。配置文件字段动态存储在数据库中。数据库如下所示:

CREATE TABLE profileFields(
profileField_id INT(255) AUTO_INCREMENT,
profileField_name VARCHAR(255),
profileField_value VARCHAR(255),
profileField_type VARCHAR(255),
profileField_isOptional TINYINT(1),
PRIMARY KEY(profileField_id)
);
CREATE TABLE users(
user_id INT(255) AUTO_INCREMENT,
user_username VARCHAR(255),
user_password VARCHAR(255),
user_email VARCHAR(255),
PRIMARY KEY(user_id)
);
CREATE TABLE profileValues(
profileValue_id INT(255) AUTO_INCREMENT,
profileValue_profileField_id INT(255),
profileValue_user_id INT(255),
profileValue_value VARCHAR(255),
PRIMARY KEY(profileValue_id)
);

我正在尝试获取包含所有配置文件字段和值的所有用户的列表。我总共有 50,000 个用户和 60 个个人资料字段,从而产生 3,000,000 个个人资料值。

检索此类列表(并可能根据个人资料字段执行搜索)的最有效方法是什么?

最佳答案

“最有效”的方法总是很难确定。首先尝试以下这些:

  1. profileValues.profileValue_value 中的许多值都会重复,因此您可能会考虑创建一个表来保存所有可能的字符串(可能是不断增长的字符串列表)并将该字段转换为 int。然后可以对其进行索引,以进行非常高效的搜索,而无需执行 300 万行。

  2. profileValues 不需要对 profileValue_id 进行 PK;考虑 (profileValue_user_id + profileValue_profileField_id) 的 PK。这将确保更快地对联接建立索引。

您还需要检查:What is the MAX number if I store int(255) in MySQL?

关于mysql - 在 MySQL 中查询大量动态配置文件的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35227062/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com