这是一个理论上的例子 - 我提出的一个问题是帮助我学习的一种方式。我很感激任何指针和解释,因为当谈到大型数据库时,我不仅仅是业余爱好者,而且渴望了解更多信息。
以下SQL即将在800万条记录的数据库上运行,可以采取哪些措施来提高效率?
SELECT
email_subscribers_extra.sendscont,
email_list_subscribers_new.subscriberid,
email_subscribers_extra.lastopen
FROM
email_list_subscribers_new
LEFT JOIN
email_subscribers_extra ON email_subscribers_extra.subscriberid = email_list_subscribers_new.subscriberid
WHERE
email_list_subscribers_new.partner = 'AJ'
ORDER BY
email_subscribers_extra.lastsend ASC LIMIT 0, 40000
编辑: 让我们假设它是一个Linux apache,mysql服务器就像我通常使用的那样。目前没有设置索引。
答案 0 :(得分:2)
提高效率是SQL调优中的一个加载短语。您通常会添加索引以加快SELECT性能,但添加索引通常会降低更新速度。每个INSERT和DELETE语句都需要重写索引。许多UPDATE语句也需要重写索引。
没有查看执行计划,也没有考虑对INSERT,UPDATE和DELETE语句的影响,我建议在
上添加索引大多数dbms会自动为外键引用中使用的列添加索引。但是至少其中一些会让你稍后放弃该索引。
因此,在这些列上添加索引,或确保支持外键约束的索引存在。
在某些情况下,一个多列索引将为您提供比两个单列索引更好的SELECT性能。