以下是涉及到插入表格的查询的 种改进方法
)使用LOAD DATA INFILE从文本下载数据这将比使用插入语句快 倍
)使用带有多个VALUES列表的INSERT语句一次插入几行这将比使用一个单行插入语句快几倍 调整bulk_insert_buffer_size变量也能提高(向包含行的表格中)插入的速度
)可以对myisam表并行插入Concurrent_insert系统变量可以被设置用于修改concurrent insert处理 该变量默认设置为 如果concurrent_insert被设置为 并行插入就被禁用 如果该变量被设置为 在表的末端可以并行插入 即便该表的某些行已经被删除
)使用插入延迟
如果你的客户不能或无需等待插入完成的时候 这招很有用 当你使用MySQL存储 并定期运行需要很长时间才能完成的SELECT和UPDATE语句的时候 你会发现这种情况很常见 当客户使用插入延迟 服务器立刻返回 如果表没有被其他线程调用 则行会列队等待 *** 入 使用插入延迟的另一个好处就是从多个客户插入的情况会被绑定并记录在同一个block中 这将比处理多个独立的插入要快得多
)插入之前将表锁定(只针对非事务处理型的表)
这将提高数据库性能 因为索引缓冲区只是在所有的插入语句完成后才对磁盘进行一次刷新 通常情况下 有多少个插入语句就会有多少次索引缓冲区刷新 如果你可以用一个插入语句实现所有行的插入 则无需使用显式锁定语句
lishixinzhi/Article/program/MySQL/201311/29642用 insert into pro_color_dict(OPT_REAL_NAME) (SELECT pcd.OPT_REAL_NAME
FROM pro_color_dict pcd
where pcd.OPT_REAL_NAME NOT IN
(SELECT hpcd.PRO_COLOR_DESC
FROM hh_pro_color_dict hpcd
)) 这样的语句;给你个思路,比较俩表不同的数据,最好用主键去比较~~
常见的插入方式有以下几种:
这种方式每次只能插入一行
且set从句内的values不能全部为空
这种方式可以一次性插入多行
不同行之间的数据要 用逗号进行分隔
这种方式用于替换表中的某一行
若新插入记录的主码已经存在于表中,则用新记录替换旧记录
若新插入记录的主码不在表中,则直接插入新记录
普通的update语句写法如下:
例如:在instructor(教师信息)表中
我们想更新 ID为10101的教师的工资为70000
对于更复杂的数据更新 我们可以添加 case-when从句
从而实现对数据的分类更新
例如:在instructor(教师信息)表中 对所有教师进行涨薪
对工资小于等于100000的涨薪5%,其他人涨薪3%
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)