php - MYSQL 我应该使用 2 个查询还是将它们添加到我的新表中

标签 php mysql

好吧,假设我有 1 个用户表,它存储 USER_NAME、USER_ID 和 USER_COLOR 我正在为将存储 USER_NAME 的日志创建一个新表

在查看页面时我需要接收此数据 我可以做 2 个查询,一个查询日志,然后在 USER_NAME=USER_NAME 处搜索用户

或者我可以将 USER_NAME、USER_ID 和 USER_COLOR 全部存储在日志中 然后我只需 1 个查询即可获取所有数据。

什么会更快或更好?

示例查询

$sql = "SELECT id, username, level, namecolor FROM users ORDER BY level DESC"; 
$query = mysql_query($sql) or die(mysql_error());
$count = mysql_num_rows($query);
while($row = mysql_fetch_object($query)) {
    $Member_id = htmlspecialchars($row->id);

最佳答案

当您使用 MySql 时,您的数据库是关系型数据库。

这给了你(正如你已经知道的)许多优势,所以,与其将用户信息(已经存储在它自己的表中)复制到其他表(在本例中为日志),你最好做 在需要有关用户的更多信息时加入

让用户信息在它自己的表中,所以,当查询日志数据时,你可以这样做:

SELECT logs.log_id, logs.log_date, logs.user_name, users.user_color
FROM logs
LEFT JOIN users ON logs.user_name = users.user_name

另一点:如果您向用户表(例如电子邮件)添加一个新字段,请想一想在复制用户信息时会发生什么情况。

关于php - MYSQL 我应该使用 2 个查询还是将它们添加到我的新表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290658/

相关文章:

php - PDO 如何知道 MySQL 中最后插入的 id?

mysql - SQL中组合键索引的内部结构

mysql - 使用 DNS 名称在两个 VM 之间进行通信

php - MySQL连接表并在相同值之间进行比较时返回第二个表的最新行

mysql - 如何在MySQL中进行多表查询?

mysql - SQL 查询汇总员工每周的工作时间

php - HttpURLConnection 从 .php 文件返回垃圾

php - MYSQL 和 PHP,其中任何相关行都包含字符串

java - 无法识别阿拉伯字符

php - 关闭控制台后重置所有登录用户