数据库为MYSQL.
表department[部门表], department_staff[部门_员工表,中间表], staff[员工表], task[员工任务列表表]
平均每张表至少有数据40~50万条!
表结构为:department {
    dep_id, // 主键
    dep_name // 部门名称
}department_staff {
    department_staff_id, // 主键
    dep_id, // 部门表外键
    staff_id, // 博主表外键
    type // 员工类型 '在编'或'社聘'
}staff {
    staff_id, // 主键
    name, // 员工姓名
    idcard // 员工卡号,为数字
}task {
    task_id, // 主键
    content, //任务内容
    pubtime // 任务发布时间
}表关系应该已经清楚了吧?员工和部门多对多[某员工可以隶属于多个部门],员工和任务一对多。
现在,想查询出的 “某部门下”的“在编的”且“员工卡号”在100到500之间的“最新发布的”“前100条”任务的内容。
应该如何查?
我试图联查以及join等语句都是效率相当慢。至少要4~5分钟。不知道如何进行优化,还是设计有什么问题。其中department_staff表中的type是否应该设计到staff表中?
求完美优化的SQL语句,或者设计方案,或者解决方案。万分感激!!!!!!!!!