-1
我一直在努力創建正確的索引來提高我們在我們的數據庫上運行的特定查詢的性能,我希望你們中的一個人可以幫助我指出我的權利方向。MySQL索引高效地查詢表與多對多的關係
我有兩張桌子,按照下面。例如,我有一個查詢來查找屬於某個特定類別的公司的所有員工,其名稱以「Be%」爲例。我試圖在category_id, company_id
上創建一個多重索引,但這沒有幫助。什麼應該是正確的方式來索引我的表來實現這個查詢的更好的性能?先謝謝你。
SELECT
e.*
FROM employee e
INNER JOIN company c ON e.company_id = c.company_id
WHERE c.category_id = 6
AND e.first_name LIKE "Be%"
GROUP BY e.employee_id
表公司
| company_id | category_id |
+------------+-------------+
| ... | ... |
+------------+-------------+
| 47 | 6 |
+------------+-------------+
| .. | ... |
+------------+-------------+
| 252 | 6 |
+------------+-------------+
Employee表
| employee_id | company_id | first_name | ... |
+-------------+------------+------------+-----+
| 2582250 | 47 | Ben | ... |
+-------------+------------+------------+-----+
| 3447890 | 252 | Ryan | ... |
+-------------+------------+------------+-----+
| 7125966 | 252 | Beth | ... |
+-------------+------------+------------+-----+
| ... | ... | ... | ... |
+-------------+------------+------------+-----+
創建表的下方,sqlfiddle。
CREATE TABLE company (
`company_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`category_id` INT UNSIGNED NOT NULL DEFAULT 0
) ENGINE=InnoDB;
CREATE TABLE employee (
`employee_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`company_id` INT UNSIGNED NOT NULL,
`first_name` VARCHAR(255)
) ENGINE=InnoDB;
我建議......和......,還有...。或者,請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql - 查詢 – Strawberry
@Strawberry謝謝我已按要求添加。不幸的是,這隻會成爲一個幾百萬行的問題,這在sqlfiddle中是不可行的。 – Martin
好的。我應該添加... – Strawberry