Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询中连接和WHERE操作的优化_Mysql_Sql - Fatal编程技术网

Mysql SQL查询中连接和WHERE操作的优化

Mysql SQL查询中连接和WHERE操作的优化,mysql,sql,Mysql,Sql,下面是一个示例查询。粗略地看一下,我试图找出如何更好地优化此查询,我试图减少底部WHERE选项中的或运算符,但我还没有找到方法。我可以对这个查询做任何建议或其他优化吗 SELECT Positions.id AS `Positions__id`, Positions.name AS `Positions__name`, Positions.media_id AS `Positions__media_id`, Posi

下面是一个示例查询。粗略地看一下,我试图找出如何更好地优化此查询,我试图减少底部
WHERE
选项中的
运算符,但我还没有找到方法。我可以对这个查询做任何建议或其他优化吗

SELECT Positions.id AS `Positions__id`, 
            
        Positions.name AS `Positions__name`, 
        Positions.media_id AS `Positions__media_id`, 
        Positions.position_category_id AS `Positions__position_category_id`, 
        Positions.position_type_id AS `Positions__position_type_id`, 
        Positions.description AS `Positions__description`, 
        Positions.detail AS `Positions__detail`, 
        Positions.business_skill AS `Positions__business_skill`, 
        Positions.knowledge AS `Positions__knowledge`, 
        Positions.location AS `Positions__location`, 
        Positions.activity AS `Positions__activity`, 
        Positions.academic_degree_doctor AS `Positions__academic_degree_doctor`, 
        Positions.academic_degree_master AS `Positions__academic_degree_master`, 
        Positions.academic_degree_professional AS `Positions__academic_degree_professional`, 
        Positions.academic_degree_bachelor AS `Positions__academic_degree_bachelor`, 
        Positions.salary_statistic_group AS `Positions__salary_statistic_group`, 
        Positions.salary_range_first_year AS `Positions__salary_range_first_year`, 
        Positions.salary_range_average AS `Positions__salary_range_average`, 
        Positions.salary_range_remarks AS `Positions__salary_range_remarks`, 
        Positions.restriction AS `Positions__restriction`, 
        Positions.estimated_total_workers AS `Positions__estimated_total_workers`, 
        Positions.remarks AS `Positions__remarks`, 
        Positions.url AS `Positions__url`, 
        Positions.seo_description AS `Positions__seo_description`, 
        Positions.seo_keywords AS `Positions__seo_keywords`, 
        Positions.sort_order AS `Positions__sort_order`, 
        Positions.publish_status AS `Positions__publish_status`, 
        Positions.version AS `Positions__version`, 
        Positions.created_by AS `Positions__created_by`, 
        Positions.created AS `Positions__created`, 
        Positions.modified AS `Positions__modified`, 
        Positions.deleted AS `Positions__deleted`, 
        PositionCategories.id AS `PositionCategories__id`, 
        PositionCategories.name AS `PositionCategories__name`, 
        PositionCategories.sort_order AS `PositionCategories__sort_order`, 
        PositionCategories.created_by AS `PositionTypes__created_by`, 
        PositionTypes.created AS `PositionTypes__created`, 
        PositionTypes.modified AS `PositionTypes__modified`, 
        PositionTypes.deleted AS `PositionTypes__deleted` 
        FROM positions Positions 
        LEFT JOIN positions_personalities PositionsPersonalities 
            ON Positions.id = (PositionsPersonalities.position_id) 
        LEFT JOIN personalities Personalities 
            ON (Personalities.id = (PositionsPersonalities.personality_id) 
            AND (Personalities.deleted) IS NULL) 
        LEFT JOIN positions_practical_skills PositionsPracticalSkills 
            ON Positions.id = (PositionsPracticalSkills.position_id) 
        LEFT JOIN practical_skills PracticalSkills 
            ON (PracticalSkills.id = (PositionsPracticalSkills.practical_skill_id) 
            AND (PracticalSkills.deleted) IS NULL) 
        LEFT JOIN positions_basic_abilities PositionsBasicAbilities 
            ON Positions.id = (PositionsBasicAbilities.position_id) 
        LEFT JOIN basic_abilities BasicAbilities 
            ON (BasicAbilities.id = (PositionsBasicAbilities.basic_ability_id) 
            AND (BasicAbilities.deleted) IS NULL) 
        LEFT JOIN positions_tools PositionsTools 
            ON Positions.id = (PositionsTools.position_id) 
        LEFT JOIN affiliates Tools 
            ON (Tools.type = 1 AND Tools.id = (PositionsTools.affiliate_id) 
            AND (Tools.deleted) IS NULL) 
        LEFT JOIN positions_career_paths PositionsCareerPaths
            ON Positions.id = (PositionsCareerPaths.position_id) 
        LEFT JOIN affiliates CareerPaths 
            ON (CareerPaths.type = 3 
            AND CareerPaths.id = (PositionsCareerPaths.affiliate_id) 
            AND (CareerPaths.deleted) IS NULL) 
        LEFT JOIN positions_rec_qualifications PositionsRecQualifications 
            ON Positions.id = (PositionsRecQualifications.position_id) 
        LEFT JOIN affiliates RecQualifications 
            ON (RecQualifications.type = 2 AND RecQualifications.id = (PositionsRecQualifications.affiliate_id) 
            AND (RecQualifications.deleted) IS NULL) 
        LEFT JOIN positions_req_qualifications PositionsReqQualifications 
            ON Positions.id = (PositionsReqQualifications.position_id) 
        LEFT JOIN affiliates ReqQualifications 
            ON (ReqQualifications.type = 2 AND ReqQualifications.id = (PositionsReqQualifications.affiliate_id) 
            AND (ReqQualifications.deleted) IS NULL) 
        INNER JOIN position_categories PositionCategories 
            ON (PositionCategories.id = (Positions.position_category_id) 
            AND (PositionCategories.deleted) IS NULL) 
        INNER JOIN position_types PositionTypes 
            ON (PositionTypes.id = (Positions.position_type_id) 
            AND (PositionTypes.deleted) IS NULL) 
        WHERE ((PositionCategories.name LIKE '%Software Engineer%' 
                OR PositionTypes.name LIKE '%Software Engineer%' 
                OR Positions.name LIKE '%Software Engineer%' 
                OR Positions.description LIKE '%Software Engineer%' 
                OR Positions.detail LIKE '%Software Engineer%' 
                OR Positions.business_skill LIKE '%Software Engineer%' 
                OR Positions.knowledge LIKE '%Software Engineer%' 
                OR Positions.location LIKE '%Software Engineer%' 
                OR Positions.activity LIKE '%Software Engineer%' 
                OR Positions.salary_statistic_group LIKE '%Software Engineer%' 
                OR Positions.salary_range_remarks LIKE '%Software Engineer%' 
                OR Positions.restriction LIKE '%Software Engineer%' 
                OR Positions.remarks LIKE '%Software Engineer%' 
                OR Personalities.name LIKE '%Software Engineer%' 
                OR PracticalSkills.name LIKE '%Software Engineer%' 
                OR BasicAbilities.name LIKE '%Software Engineer%' 
                OR Tools.name LIKE '%Software Engineer%' 
                OR CareerPaths.name LIKE '%Software Engineer%' 
                OR RecQualifications.name LIKE '%Software Engineer%' 
                OR ReqQualifications.name LIKE '%Software Engineer%') 
                AND publish_status = 1 
                AND (Positions.deleted) IS NULL) GROUP BY Positions.id 
                ORDER BY Positions.sort_order desc, 
                    Positions.id DESC LIMIT 50 OFFSET 0

我认为创建全文索引将是更好的选择。如果您需要有关这方面的更多信息,请访问:


我认为创建全文索引对您来说是更好的选择。如果您需要有关这方面的更多信息,请访问:


使用lucene或全文索引之类的工具!所有像“%Software Engineer%”这样的人都不会使用索引,不管你怎么努力。@MitchWheat我现在正在看lucene,如果你能详细说明的话,请感谢。你真的应该使用lucene或基于此的东西,比如ElasticSearch。互联网上有很多关于ES的教程。请使用lucene或全文索引之类的工具!所有像“%Software Engineer%”这样的人都不会使用索引,不管你怎么努力。@MitchWheat我现在正在看lucene,如果你能详细说明的话,请感谢。你真的应该使用lucene或基于此的东西,比如ElasticSearch。互联网上有大量关于ES的教程。本网站上的许多其他帖子也提出了类似的问题并给出了相同的答案。非常欢迎@M.Izzat。致以最良好的祝愿。本网站上的许多其他帖子提出了类似的问题,并给出了相同的答案。非常欢迎@M.Izzat。最美好的祝福。