Эффективность MySQL с использованием перекрестного соединения или отдельного соединения - PullRequest
0 голосов
/ 23 сентября 2019

У нас есть сотрудники с отделом и названием, оба нуждаются в переводе, поэтому мы выбираем этот дизайн для поддержки i18n.

вот схема: диаграмма дБ

Мы хотим запросить все переводы в запросе.

У нас есть 5 строк в таблице Language, 500 ~ 1000 в таблице Employee, <= 100 в таблице Department, <= 100 в таблице Title. </p>

Я пробовал эти два запроса и посмотрелобъяснение до сих пор не может определить, какой использовать.

Какой запрос более эффективен?или есть лучший запрос?

 SELECT 
        e.id AS id,
        e.name AS employeeName,
        e.imgUrl AS imgUrl,
        e.level AS level,
        edt.departmentId AS departmentId,
        edt.titleId AS titleId,
        tts.name AS title,
        dts.name AS department,
        l.id AS languageId,
        l.i18n AS i18n
    FROM
        Employee e
         JOIN EmployeeDepartmentTitle edt ON edt.employeeId = e.id
         JOIN Department d ON d.id = edt.departmentId
         JOIN DepartmentTs dts ON d.id = dts.departmentId
         JOIN Title t ON t.id = edt.titleId
         JOIN TitleTs tts ON t.id = tts.titleId
         JOIN Language l ON l.id = dts.languageId
         JOIN Language l2 ON l2.id = tts.languageId
    WHERE
        l.id = l2.id;
SELECT 
        e.id AS id,
        e.name AS employeeName,
        e.imgUrl AS imgUrl,
        e.level AS level,
        edt.departmentId AS departmentId,
        edt.titleId AS titleId,
        tts.name AS title,
        dts.name AS department,
        l.id AS languageId,
        l.i18n AS i18n
    FROM
        Employee e
         JOIN Language l 
         JOIN EmployeeDepartmentTitle edt ON edt.employeeId = e.id
         JOIN Department d ON d.id = edt.departmentId
         JOIN DepartmentTs dts ON d.id = dts.departmentId AND l.id = dts.languageId
         JOIN Title t ON t.id = edt.titleId 
         JOIN TitleTs tts ON t.id = tts.titleId AND l.id = tts.languageId
         ;
...