<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## 字段類型 ### 字段類型的選擇 #### 選擇合理范圍內最小的 我們應該選擇最小的數據范圍,因為這樣可以大大減少磁盤空間及磁盤I/0讀寫開銷,減少內存占用,減少CPU的占用率。 #### 選擇相對簡單的數據類型 數字類型相對字符串類型要簡單的多,尤其是在比較運算是,所以我們應該選擇最簡單的數據類型,比如說在保存時間時,因為PHP可以良好的處理LINUX時間戳所以我們可以將日期存為int(10)要方便、合適、快速的多。 #### 不要使用null 為什么這么說呢,因為MYSQL對NULL字段索引優化不佳,增加更多的計算難度,同時在保存不處理NULL類形時,也會做更多的工作,所以從效率上來說,不建議用過多的NULL。有些值他確實有可能沒有值,怎么辦呢?解決方法是數值弄用整數0,字符串用空來定義默認值即可。 #### 字符串類型的使用 字符串數據類型是一個萬能數據類型,可以儲存數值、字符串等。 保存數值類型最好不要用字符串數據類型,這樣存儲的空間顯然是會更大,而且在排序時字符串的9是大于22的,其實如果進行運算時mysql會將字符串轉換為數值類型,大大降低效果,而且這種轉換是不會走原有的索引的。 如果明確數據在一個完整的集合中如男,女,那么可以使用set為enum數據類型,這種數據類型在運算及儲存時以數值方式操作,所 以效率要比字符串更好,同時空間占用更少 ### 數值類型的選擇 整數類型很多比如tinyint、int、smallint、bigint等,那么我們要根據自己需要存儲的數據長度決定使用的類型,同時tinyint(10)t和 tinyint(100)在儲存不計算上并無任何差別,區別只是顯示層面上,但是我們也要選擇適合合適的數據類型長度。可以通過指定zerofill 屬性查看顯示時區別。 浮點數float和double在儲存空間及運行效率上要優于精度數值類型decimal,但float不double會有舍入錯誤而decimal則可以提供更加準確的小數級精確運算不會有錯誤產生計算更精確,適用于金融類型數據的存儲。 數值數據類型要比字符串執行更快,區間小的數據類型占用空間更少,處理速度更快,如tinyint可比bigint要快的多選擇數據類型時要考慮內容長度,比如是保存毫米單位還是米而選擇不同的數值類型 ## 數據庫表設計 ### 水平分表 #### 按時間分表 這種分表方式有一定的局限性,當數據有較強的實效性,如微博發送記錄、微信消息記錄等,這種數據很少有用戶會查詢幾個月前的數據,如就可以按月分表。 #### 按區間范圍分表 把數據分到不同的表格中 <table > <tbody><tr> <td>table_1</td> <td>user_id從1~100w</td> </tr> <tr> <td>table_2</td> <td>user_id從100w~200w</td> </tr> <tr> <td>table_3</td> <td>user_id從200w~300w</td> </tr> </tbody></table> ### 垂直分表 一張表的字段過多的時候,我們可以把表垂直進行拆分,把不經常用的字段或者不經常查詢的字段把到另外一張表,當擴展表用。需要的時候再聯表查詢。 ## 查詢 ### 減少IO 根據業務的需求來獲取想要的數據,盡量少使用*號,不要返回用不到的任何字段 對一些不常更新的數據,可以采用緩存的方式,避免過多的查詢 對頻繁插入的數據,也可以緩存的方式,避免頻繁的寫入操作。如瀏覽量 在Join表的時候使用相當類型的例 ### 索引 MySQL索引的建立對于MySQL的高效運行是很重要的,索引可以大大提高MySQL的檢索速度。 打個比方,如果合理的設計且使用索引的MySQL是一輛蘭博基尼的話,那么沒有設計和使用索引的MySQL就是一個人力三輪車。 索引就像一本書的目錄一樣,我們可以通過一本書的目錄,快速的 找到需要的頁面,但是我們也不能過多的創建目錄頁,原因是如果 某一篇文章刪除或修改將發變所有頁碼的順序,就需要重新創建目 錄 索引分單列索引和組合索引。單列索引,即一個索引只包含單個列,一個表可以有多個單列索引,但這不是組合索引。組合索引,即一個索包含多個列。 創建索引時,你需要確保該索引是應用在 SQL 查詢語句的條件(一般作為 WHERE 子句的條件)。 實際上,索引也是一張表,該表保存了主鍵與索引字段,并指向實體表的記錄。 上面都在說使用索引的好處,但過多的使用索引將會造成濫用。因此索引也會有它的缺點:雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行INSERT、UPDATE和DELETE。因為更新表時,MySQL不僅要保存數據,還要保存一下索引文件。 建立索引會占用磁盤空間的索引文件。 ## explain EXPLAIN可以幫助開發人員分析SQL問題,explain顯示了mysql如何 使用索引來處理select語句以及連接表,可以幫助選擇更好的索引和 寫出更優化的查詢語句。 **全表查詢** ![](https://box.kancloud.cn/581669021aceed5b11d2dc8dcd2437ba_789x269.png) **根據某個有索引的字段進行查詢** ![](https://box.kancloud.cn/6b8b857430f42a594656ffdf6424638d_798x268.png) ## 定位慢查詢 當Mysql性能下降時,通過開啟慢查詢來獲得哪條SQL語句造成的響應過 慢,進行分析處理。當然開啟慢查詢會帶來CPU損耗和日志記錄的IO開銷, 所以我們要間斷性的打開慢查詢日志來查看Mysql運行狀態。 查詢能記錄下所有執行超過long_query_time時間的SQL語句, 用于找 到執行慢的SQL, 方便我們對這些SQL進行優化. ### 是否開啟慢查詢 ~~~ show variables like "%slow%"; ~~~ ### 查詢慢查詢SQL狀況 ~~~ show status like "%slow%"; ~~~ ### 慢查詢時間 ~~~ show variables like "long_query_time" ~~~ ### 開啟記錄慢查詢 修改mysql配置文件my.ini加入 ~~~ slow_query_log = on; slow_query_log_file = /data/f/mysql_slow_xbs.log long_query_time = 2 //測試執行一條慢查詢 mysql>select sleep(3); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看