資料庫建表的乙個坑

2022-08-21 10:06:14 字數 456 閱讀 9137

今天在預生產環境配置環境的時候出現了個問題, 就是我乙個查詢sql竟然花了17秒, 這是乙個嚴重的問題.

本來以為是環境的問題, 後來發現環境沒問題, 那就是我的sql有問題, 初步認為是沒有走索引. 我把控制台

列印的sql放到預生產環境中直接執行, 果然花了10多秒. 執行了sql計畫發現確實沒有走索引, 但是測試環境

的指令碼卻走了索引, 一樣的sql不同環境執行起來效果不一樣, 這個確實很納悶, 想了一下可能是建立表除了問題, 

果然是這樣的, 預生產環境建立表的sql指令碼沒有指定編碼, 而生產環境表的編碼是utf-8, 我新建的表沒有指定編碼

就預設為utf-8mb4.

雖然建立了索引, 但是因為編碼不同, 表連線查詢不走索引, 主表的資料量又龐大, 全表查詢就十分慢了, 其實測試環境

建的表是設定了編碼, 但是我預設以為是utf8, 就把設定編碼的語句刪除了, 聰明反被聰明誤, 

資料庫建表

資料庫設計三大正規化 為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一...

資料庫建表

use 選擇現有資料庫。master為系統預設資料庫 use master goif exists select from sys.databases where name student drop database student gocreate database student gouse s...

資料庫建表

資料庫設計三大正規化 為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一...