mysql 数据量太大,怎么优化一下

SELECT dir1.url from dir1 LEFT JOIN dir2 on dir2.url=dir1.url where dir2.id is null or dir1.md5<>dir2.md5
如题,此语句当数据量大的时候会宕机
求助大神帮我想想怎么优化一下

因为我不是做这个的,我只是在c语言一个程序中用到了
然后用我的程序的人说会很慢,而且cpu占用率高
求助帮我优化

数据有多大?看看执行计划 找出瓶颈在那里。

先用explain查看一下执行的性能评估
然后就是你的索引是否利用上了

1、索引需要遵循最左原则
2、使用内存表

在csdn里面有人发过一篇叫做“数据库性能优化之SQL语句优化”的博文,里面讲的就是如何优化以及提升效率,应该会对楼主有用,可以去看看

看了下sql,主要感觉存在问题的是 dir2.url = dir1.url / dir2.id IS NULL / dir1.md5 <> dir2.md5 三个地方。
优化步骤:
1、给 每张表 url 价格 64 bit 的 hash 值存储字段,例如:url_code 该字段加索引
2、dir2.id 若存在是 null 的话,该字段加索引,给个默认常量值
3、第三个条件,也不知道你具体逻辑是什么,但是能改 不使用 <> 最好改了。
最后可以 sql 可以这样。

SELECT
    dir1.url 
FROM
    dir1
    LEFT JOIN dir2 ON dir2.url = dir1.url 
WHERE
    dir2.id IS NULL 
UNION ALL
SELECT
    dir1.url 
FROM
    dir1
    LEFT JOIN dir2 ON dir2.url = dir1.url 
WHERE
     dir1.md5 <> dir2.md5

若有帮助,望采纳.......