色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql 建立索引在on 從句中

林子帆2年前10瀏覽0評論

MySQL建立索引是提高數據庫查詢效率的一種方法,索引在查詢時可以幫助數據庫快速定位到需要查詢的數據。而在MySQL的查詢語句中,on從句也是一個需要注意索引使用的地方。

on從句是在進行多表查詢時使用的,用于指定條件來匹配兩個表中的數據。在進行on從句的查詢時,如果對于匹配條件沒有建立索引,那么MySQL會進行全表掃描,這會極大地影響查詢速度。

下面的代碼演示了在兩個表進行查詢時,建立索引對查詢效率的影響。

-- 創建兩個表book和author
CREATE TABLE book(id INT PRIMARY KEY, title VARCHAR(255), author_id INT);
CREATE TABLE author(id INT PRIMARY KEY, name VARCHAR(255));
-- 在author表中插入10萬條數據
INSERT INTO author(id, name) 
SELECT 
seq.seq,
CONCAT('Author', seq.seq)
FROM (SELECT 0 seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) seq
CROSS JOIN (SELECT 0 seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) seq2
CROSS JOIN (SELECT 0 seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) seq3;
-- 在book表中插入10萬條數據,并設置作者為1到100000中的一個隨機數
INSERT INTO book(id, title, author_id) 
SELECT 
seq.seq,
CONCAT('Book', seq.seq),
ROUND(RAND()*100000+1)
FROM (SELECT 0 seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) seq
CROSS JOIN (SELECT 0 seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) seq2
CROSS JOIN (SELECT 0 seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) seq3;
-- 未建立索引的查詢
EXPLAIN SELECT *
FROM book b
JOIN author a ON b.author_id = a.id
WHERE a.name = 'Author50000';
-- 建立索引的查詢
ALTER TABLE author ADD INDEX idx_name(name);
EXPLAIN SELECT *
FROM book b
JOIN author a ON b.author_id = a.id
WHERE a.name = 'Author50000';

在以上代碼中,我們創建了book和author兩個表,并在author表中插入了10萬條數據,在book表中插入了100萬條數據,并對author_id字段建立了索引。我們使用on從句在兩個表上進行查詢,其中條件為author表中name為'Author50000'的記錄,未建立索引的查詢需要掃描整個author表,而建立索引的查詢只需要掃描索引所在的部分。通過使用explain命令可以看到兩個查詢的執行計劃,建立索引的查詢耗時顯著降低。

綜上所述,在進行MySQL查詢時建立索引是提高查詢效率的必要方法,在使用on從句進行多表查詢時同樣需要注意建立索引,以避免不必要的全表掃描。