sql - 这是我在 MySQL 中尝试做的事情的最佳查询吗?

标签 sql mysql query-optimization

我正在运行许多查询,这些查询将不断变化的数据合并到一个主表中,其中一个查询(如下)似乎运行得相当慢。

设置如下:products 表和products_temp 表具有相同的结构。新数据进入 products_temp 表,然后我运行类似于下面的查询以将新数据与主 products 表合并。

INSERT INTO products ( name, brand, price, feeds_id, img_url, referral_url, productid, isbn, ean, upc )
SELECT name, brand, price, feeds_id, img_url, referral_url, productid, isbn, ean, upc
FROM products_temp 
WHERE feeds_id = 449
AND productid NOT IN (
    SELECT productid
    FROM products
    WHERE feeds_id = 449
)

这两个表在 feeds_id 上都有索引,但我觉得这没有任何区别。

例如,products 可能包含超过 350 万行,products_temp 可能包含 50,000 行以合并 products

所以我的问题是这需要多长时间?我能多快完成?

最佳答案

是的,这个技术叫做Shadow Table trick .

关于sql - 这是我在 MySQL 中尝试做的事情的最佳查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304063/

相关文章:

mysql - 从 CGI 脚本 Perl 访问 DBI 连接配置文件的正确方法

mysql - SQL查询匹配别名和排序依据并优化查询

mysql - 对许多参数表使用数据库投票表

mysql - 弹性和关系数据库

sql - 实现快速用户界面通配 rune 本搜索 (MS Access) 的最佳方法是什么?

mysql - 根据值插入重复记录而不使用游标

php - 在分层 JSON 中添加字段

php - 在 php 脚本中使用缓存

mysql - 如何用这么多 AND 组织我的查询

sql - ORDER BY 条件