sql - 如何优化这个查询?

标签 sql mysql

价格 ID id_stock 价格 日期

**stocks**
id
stock_name
active

现在我必须为每个具有 MAX(prices.date) > 15 天(我必须通过的日期)的股票设置 stocks.active=0 )

这是我的查询,但是非常非常慢!!!

update stocks set stocks.active=0 where stocks.id IN (

SELECT prices.id_stock 
FROM prices
GROUP BY prices.id_stock
HAVING datediff('2010-08-17', MAX( prices.date )) > 15

)

如何优化?

非常感谢!

最佳答案

UPDATE  stocks
SET     active = 0
WHERE   DATEDIFF('2010-08-17',
        (
        SELECT  MAX(prices.date)
        FROM    prices
        WHERE   id_stock = stocks.id
        )) > 15

价格(id_stock,日期)上创建索引

关于sql - 如何优化这个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3514505/

相关文章:

php - 为什么我的登录表单允许用户使用正确的用户名登录,但密码不正确? (详见)

PHP多个复选框到数据库

MySQL连接汉字返回NULL

mysql - 左连接 : is there a way to reduce the line numbers?

sql - 如何使用 ON DUPLICATE KEY UPDATE 插入 MySQL 表?

可以在 sql profiler 中读取的 SQL 'comment'

mysql - 从数据库中清除垃圾邮件的正确方法

python - 使用 Python 将 CSV 数据写入两个 MYSQL 表

mysql - 如何使用 group-concat mysql 创建 json 格式?

mysql - 获取每组分组 SQL 结果中最大值的记录