【如何提高MySQL INSERT和UPDATE的性能?】教程文章相关的互联网学习教程文章

mysql – LOAD DATA INFILE和ON DUPLICATE KEY UPDATE

使用LOAD DATA INFILE时,有没有办法获得常规INSERT语句的ON DUPLICATE KEY UPDATE提供的相同功能? 我想要做的是:对于我的文件的每一行,如果该行不存在,则插入新行,否则更新所选字段. 我的表有5列:A,B,C,D和E.A是主键.有时,我必须插入包含所有值的新行,但有时我只需要更新B和C.但是,重点是我想在同一个文件中重新组合所有INSERT或UPDATE. 谢谢解决方法:如果要插入/更新某些字段,则应将数据加载到附加表中,然后使用INSERT,UPDATE或...

mysql UPDATE和REPLACE

UPDATE和REPLACE基本类似,但是它们之间有两点不同。   首先查重,1. 当没有找到匹配记录(不存在重复记录)时: UPDATE什么都不做, REPLACE会做insert动作。2. 当找到匹配记录(存在重复记录)时: UPDATE可以更新记录的一部分字段。 REPLACE将已存在记录彻底删除(DELETE),再插入新的记录(INSERT)。也就是说,将所有的字段都更新为新记录的字段了。

mysql – 如果满足两列(无论顺序)的条件,则INSERT或UPDATE【代码】

我想做以下事情:INSERT INTO table1 (term1, term2, number) values ('A','B',10); 但是,如果值1和B已经存在于表1中,而不管它们的顺序如何,即.谓词(term1='A' && term2='B') OR (`term1='B' && term2='A')是的,那我只是想更新列号.有没有办法做到这一点?解决方法:处理这种情况的一种(可能是)干净的方法是使用INSERT … ON DUPLICATE KEY UPDATE,read the documentation.If you specify ON DUPLICATE KEY UPDATE, and a row is in...

php – 在mysql update Query中附加逗号分隔值无重复项【代码】

我将表数据存储为这样的逗号分隔值id name fk_id1 abc 2,4,6 2 def 2,7,8现在,我想在MySQL的Update Query中使用CASE WHEN或某些函数,如果没有重复值,则更新字段: 例如,fk_id的相同值然后忽略其他更新,如果10为id 1然后更新,但如果7为id 2然后忽略id name fk_id1 abc 2,4,6,10 2 def 2,7,8我尝试了以下代码:if(find_in_set($fk_id,fk_id),fk_id, CONCAT_WS(',', f...

为什么这个MYSQL UPDATE查询需要2分钟才能运行?【代码】

此查询执行大约需要2分钟(更改9条记录):UPDATE table1 t1 SET t1.code_id = null, t1.code_group = null WHERE t1.another_id IN (SELECT t2.another_id FROM table2 t2WHERE ((t2.id_parent = 2658 AND t2.year = 2016) OR (t2.id = 2658 AND t2.year = 2016)))单独执行此查询需要0.0030秒:SELECT t2.another_id FROM table2 t2 WHERE ((t2.id_parent = 2658 AND t2.year = 2016) OR (t2.id = 2658 AND t2.year = 2016))并以整...

mysql – Laravel从Update Query获取记录ID【代码】

对于此更新查询,我正在尝试在运行它之后获取id.$results = DB::table('testDB123.users')->where('fbID', '=', $x['id'])->update(['updated_at' => $x['currDate'],'fbFirstName' => $x['firstName'],'fbLastName' => $x['lastName']]);尝试没有运气$results-> id 是否有类似于insertGetId的更新查询?$id = DB::table($table1)->insertGetId([...])解决方法:update()方法不返回对象,因此您有两个选择: 选项1 使用updateOrCreate...

MariaDB / MySql:在CREATE上设置CURRENT_TIMESTAMP并在UPDATE上更改注释【代码】

我在几年内没有使用MySQL,当我创建一个新表时,它做了一些我没想到的东西.我正在使用MariaDB v5.5.60-MariaDB 我需要创建一个包含已创建列和更新列的表. 我需要创建的列只在创建行时设置为CURRENT_TIMESTAMP,然后永远不会更改,除非我明确地更改它. 我需要在创建行和更改行时将更新列设置为CURRENT_TIMESTAMP. 如果我执行以下操作:CREATE TABLE user_prefs (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE,user VARCHAR(255) N...

在Django程序中的数百个MySQL UPDATE语句中禁用自动提交【代码】

在Django程序中,如何在数百个UPDATE之前显式禁用自动事务管理,并在UPDATE完成后启用它? 我调查了http://docs.djangoproject.com/en/dev/topics/db/transactions/,但没有发现任何线索. 我试着在开头添加以下代码settings.DISABLE_TRANSACTION_MANAGEMENT = True我也试过了cursor = connection.cursor() cursor.execute('SET SESSION autocommit = 0;') ... UPDATE ... cursor.execute('SET SESSION autocommit = 1;')上述两种方法都...

MySql Update字段或Insert如果不存在,则没有主键

我有一个3列(所有数字)表,其字段为CustID(非唯一),ProdID(非唯一)和Price.唯一的“唯一性”是没有CustID / ProdID对重复.因此,每个客户对每个产品都有不同的“价格”.我正在使用三线方法. (a)搜索是否存在配对,(b)如果是,我更新价格,(c)如果没有,我将新配对与价格一起插入.我还没有为id创建索引(它可以用于开发目的.) 任何人都可以建议使用REPLACE指令的方法,大多数INSERT / ON DUPE示例似乎暗示主键是必要的.我通常总是有一个PK,只...

mysql – Doctrine2 updateSchema与外键冲突【代码】

updateSchema运行良好的空数据库,但第二次我收到以下MySQL错误:SQLSTATE[HY000]: General error: 1025 Error on rename of'./mydatabase/#sql-7f5_2b' to'./mydatabase/mytable' (errno: 150)根据快速搜索,此错误发生在外部约束违规上.正确的方法是在更改表时禁用外键检查的学说. 我可以做些什么(除了补丁Dcotrine)? 我还指定了更多:'engine' => 'myisam',…在connectionOptions中,但它被忽略了. 编辑: 当我从包含对mytable的引...

如何处理mysql innodb表中“select for update”作业的排队【代码】

我在inndob表中有一个恒定的’select … for update’查询流. 主要条件是它选择’column1’所在的所有字段<超过100.在后台有持续插入,这可能涉及’column1’是<超过100,但这不是问题.如果第一次选择更新错过了它,因为它正在执行该查询时,或者正在获取结果数组时,下一个将捕获它,我很乐意将第一个查询标记为缺少它,因为它是太晚了.如果我有10个’select for update’查询等待,因为inndob字段锁定,我应该自己处理它们的排队还是让数据...

[MySQL]MySQL的update的一个坑【图】

最近好几次有开发同学在钉钉上问我,比如下图:问题归纳起来就是: 在MySQL里面update一条记录,语法都正确的,但记录并没有被更新... 刚遇到这个问题的时候,我拿到这条语句直接在测试库里面执行了一把,发现确实有问题,但和开发描述的还是 有区别 ,这里我用测试数据来模拟下: 有问题的SQL语句:update apps set owner_code='43212' and owner_name='李四' where owner_code='13245' and owner_name='张三'; 执行之前的记录是...

php – INSERT ON DUPLICATE KEY UPDATE语句的复杂mysql查询错误【代码】

对于我正在开发的Web应用程序,我有一个非常复杂的SQL语句.哪个以前工作过.但我无法弄清楚改变了什么.. sql错误:“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ON DUPLICATE KEY UPDATE bankaccountid = VALUES(bankaccountid), ownerid = VALUES(‘ at line 1″我的查询是:<?php if($bank_name1 !== '') {$bank1 = "('$bank_id1...

MySQL在触发INSERT ON DUPLICATE KEY UPDATE之前 – 手动似乎错了?【代码】

我正在使用MySQL 5.7:D:\>mysql --version mysql Ver 14.14 Distrib 5.7.17, for Win64 (x86_64)根据manual,BEFORE INSERT触发器的行为应该是:a BEFORE INSERT trigger activates for every row, followed by either anAFTER INSERT trigger or both the BEFORE UPDATE and AFTER UPDATEtriggers, depending on whether there was a duplicate key for the row.我认为这意味着无论是否存在重复的密钥匹配都会执行BEFORE INSERT,...

为什么MySQL UPDATE会永远消失?【代码】

我想弄清楚为什么我们之一迁移脚本永远在我们正在尝试进行更新从另一个表连接以获取相关的数据. 每个表(A,B)有大约100,000行.# now populate the ACHIEVEMENT_INSTANCE.OBJECTIVE_INSTANCE_ID update A a, B b set a.INSTANCE_ID = b.INSTANCE_ID where a.ID = b.ID;看起来我们正在处理创建一些的INNER JOIN笛卡尔积的类型在2表100,000 100,000之间正在采取永远(可能很长时间). 根据MySQL更新默认使用内部联接不确定我们是否可以使...