mysql优化in查询

mysql查询:
有一个栏目表,大概有600条数据,我可以看到其中400个栏目。
有一个新闻表,有100万数据。
我该怎么查询我能看到的栏目下面的所有新闻, 如果用in的话,in 400个,是不是有点多?有没有其他办法

分页查询 ,用in得话还不如用分页 还有加索引

新闻表内关联你能看到的栏目表

首先 400条 栏目表先做分页查询,对于栏目下的新闻表,在进行分页。
类似于 菜单树形结构的查询。
其次,像这种新闻数据,若果有必要作为热数据源点,可以做部分缓存处理,以提高查询效率。

关联查吧

exist 代替 in 如:
优化前:select * from A where id in ( select id from B ) ;
优化后:select * from A where id exists ( select 1 from A.id= B.id )

建议你看下这篇博客MySQL练习
同时,你还可以查看手册:MySQL 优化 中的内容