<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ##三、字段設計規范 1. 用DECIMAL代替FLOAT和DOUBLE存儲精確浮點數 > 浮點數的缺點是會引起精度問題,請看下面一個例子: <code> mysql> CREATE TABLE t3 (c1 float(10,2),c2 decimal(10,2)); Query OK, 0 rows affected (0.05 sec) >mysql> insert into t3 values (999998.02, 999998.02); Query OK, 1 row affected (0.01 sec) >mysql> select * from t3; +-----------+-----------+ | c1 | c2 | +-----------+-----------+ | 999998.00 | 999998.02 | +-----------+-----------+ 1 row in set (0.00 sec) </code> 可以看到c1列的值由999998.02變成了999998.00,這就是float浮點數類型的不精確性造成的。因此對貨幣等對精度敏感的數據,應該用定點數表示或存儲。 2. 使用TINYINT來代替ENUM類型 > 采用enum枚舉類型,會存在擴展的問題,例如用戶在線狀態,如果此時增加了:5表示請勿打擾、6表示開會中、7表示隱身對好友可見,那么增加新的ENUM值要做DDL修改表結構操作了。 3. 字段長度盡量按實際需要進行分配,不要隨意分配一個很大的容量 > 選擇字段的一般原則是保小不保大,能用占用字節少的字段就不用大字段。比如主鍵,強烈建議用int整型,不用uuid,為什么?省空間啊。空間是什么?空間就是效率!按4個字節和按32個字節定位一條記錄,誰快誰慢太明顯了。涉及幾個表做join時,效果就更明顯了。更小的字段類型占用的內存就更少,占用的磁盤空間和磁盤I/O也會更少,而且還會占用更少的帶寬。 有不少開發人員在設計表字段時,只要是針對數值類型的全部用int,但這不一定合適,就比如用戶的年齡,一般來說,年齡大都在1~100歲之間,長度只有3,那么用int就不適合了,可以用tinyint代替。又比如用戶在線狀態,0表示離線、1表示在線、2表示離開、3表示忙碌、4表示隱身等,其實類似這樣的情況,用int都是沒有必要的,浪費空間,采用tinyint完全可以滿足需要,int占用的是4字節,而tinyint才占用1個字節。 int整型有符號(signed)最大值是2147483647,而無符號(unsigned)最大值是4294967295,如果你的需求沒有存儲負數,那么建議改成無符號(unsigned),可以增加int存儲范圍。 int(10)和int(1)沒有什么區別,10和1僅是寬度而已,在設置了zerofill擴展屬性的時候有用,例: <code> root@localhost(test)10:39>create table test(id int(10) zerofill,id2 int(1)); Query OK, 0 rows affected (0.13 sec) root@localhost(test)10:39>insert into test values(1,1); Query OK, 1 row affected (0.04 sec) root@localhost(test)10:56>insert into test values(1000000000,1000000000); Query OK, 1 row affected (0.05 sec) root@localhost(test)10:56>select * from test; +------------+------------+ | id | id2 | +------------+------------+ | 0000000001 | 1 | | 1000000000 | 1000000000 | +------------+------------+ 2 rows in set (0.01 sec) </code> 4. 字段定義為NOT NULL要提供默認值 > 從應用層角度來看,可以減少程序判斷代碼,比如你要查詢一條記錄,如果沒默認值,你是不是得先判斷該字段對應變量是否被設置,如果沒有,你得通過java把該變量置為''或者0,如果設了默認值,判斷條件可直接略過。 NULL值很難進行查詢優化,它會使索引統計更加復雜,還需要MySQL內部進行特殊處理。 5. 盡可能不使用TEXT、BLOB類型 > 增加存儲空間的占用,讀取速度慢 6.表中添加create_time和update_time字段。方便大數據團隊抽取數據使用。create_time不允許更新,update_time字段設置為自動更新。 例如: `create_time` datetime NOT NULL COMMENT '創建時間', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
                  <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>

                              哎呀哎呀视频在线观看