我需要根据另一个表中的列更新一个表中的几个列。首先,我只是更新其中之一。我已经尝试了 2 种方法来做到这一点,这两种方法都有效,但是它们使用 mySQL 命令需要大约 4 分钟,而在 php 中运行时需要超过 20 分钟。两个表的长度都约为 20,000 行。
我的问题是,有没有更好或更有效的方法来做到这一点?
方法一:
UPDATE table_a,table_b
SET table_a.price = table_b.price
WHERE table_a.product_code=table_b.product_code
Run Code Online (Sandbox Code Playgroud)
方法二:
UPDATE table_a INNER JOIN table_b
ON table_a.product_code = table_b.product_code
SET table_a.price=table_b.price
Run Code Online (Sandbox Code Playgroud)
我想这些基本上以相同的方式工作,但我认为加入会更有效率。product_code 列是随机文本,尽管是唯一的,并且每一行都与另一个表中的一行相匹配。
还有什么我可以尝试的吗?
谢谢
更新:这是通过创建索引解决的,例如
CREATE UNIQUE INDEX index_code on table_a (product_code)
CREATE UNIQUE INDEX index_code on table_b (product_code)
Run Code Online (Sandbox Code Playgroud) 我想要这个数组:
var data = [1, 2, 3, 4, 5];
Run Code Online (Sandbox Code Playgroud)
我想使用angular在html中显示数据和索引:
<div ng-repeat="data in data">
<p> index of {{ data }}: {{ something here }} </p>
</div>
Run Code Online (Sandbox Code Playgroud)
和输出将是
<div>
<p> index of 1: 0 </p>
<p> index of 2: 1 </p>
<p> index of 3: 2 </p>
<p> index of 4: 3 </p>
<p> index of 5: 4 </p>
</div>
Run Code Online (Sandbox Code Playgroud)
可能?
我正在为许多用户创建一个测试站点以进行许多测验。我想将这些结果存储到表格中。每个用户可以参加 5000 个测验。我的问题是...为每个用户制作一个表格并将他的结果存储到他自己的表格中会更好吗(QuizID,Score)...或者...将所有结果存储到一个表格中会更好吗(用户 ID、测验 ID、分数)?
示例 5000 个问题 PER 表 * 1000 个用户表 VS 1 个表,其中 1000 个用户有 5,000,000 行。
另外,数据库可以容纳的 ROW 或 TABLE 是否有限制?
好的,首先,我跑了
locate my.cnf
哪个给了
/etc/mysql/my.cnf
这也是 mysqld 设置的默认配置位置
然后编辑my.cnf在[mysql]下添加的文件
[mysql]
innodb_force_recovery = 3
Run Code Online (Sandbox Code Playgroud)
然后重新启动mysqld并尝试登录 mysql -u root -p
我收到一个错误说
mysql: unknown variable 'innodb_force_recovery=3'
Run Code Online (Sandbox Code Playgroud)
也在跑步 show variables
我看到这个领域
innodb_force_recovery = 0
我正在使用 MySQL 5.5.44
发生这种情况有什么特殊原因吗?
mysql ×3
database ×2
angularjs ×1
asp.net ×1
html ×1
innodb ×1
javascript ×1
join ×1
performance ×1
php ×1