日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

      首頁西西教程數(shù)據(jù)庫教程 → mysql那些招:執(zhí)行大批量刪除、查詢和索引等操作

      mysql那些招:執(zhí)行大批量刪除、查詢和索引等操作

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:yjf512時間:2012/11/22 13:52:17字體大。A-A+

      作者:葉劍峰點(diǎn)擊:0次評論:0次標(biāo)簽: mysql

      • 類型:數(shù)據(jù)庫類大。1.7M語言:英文 評分:6.6
      • 標(biāo)簽:
      立即下載

      mysql執(zhí)行大批量刪除

      執(zhí)行大批量刪除的時候注意要使用上limit

      因為如果不用limit,刪除大量數(shù)據(jù)很有可能造成死鎖

      如果delete的where語句不在索引上,可以先找主鍵,然后根據(jù)主鍵刪除數(shù)據(jù)庫

      PS: 平時update和delete的時候最好也加上limit 1 來防止誤操作

      optimize、Analyze、check、repair維護(hù)操作

      optimize 數(shù)據(jù)在插入,更新,刪除的時候難免一些數(shù)據(jù)遷移,分頁,之后就出現(xiàn)一些碎片,久而久之碎片積累起來影響性能,這就需要DBA定期的優(yōu)化數(shù)據(jù)庫減少碎片,這就通過optimize命令。

      如對MyisAM表操作:optimize table 表名

      對于InnoDB表是不支持optimize操作,否則提示“Table does not support optimize, doing recreate + analyze instead”,當(dāng)然也可以通過命令:alter table one type=innodb; 來替代。

      Analyze 用來分析和存儲表的關(guān)鍵字的分布,使得系統(tǒng)獲得準(zhǔn)確的統(tǒng)計信息,影響 SQL 的執(zhí)行計劃的生成。對于數(shù)據(jù)基本沒有發(fā)生變化的表,是不需要經(jīng)常進(jìn)行表分析的。但是如果表的數(shù)據(jù)量變化很明顯,用戶感覺實際的執(zhí)行計劃和預(yù)期的執(zhí)行計劃不 同的時候,執(zhí)行一次表分析可能有助于產(chǎn)生預(yù)期的執(zhí)行計劃。

      Analyze table 表名

      Check檢查表或者視圖是否存在錯誤,對 MyISAM 和 InnoDB 存儲引擎的表有作用。對于 MyISAM 存儲引擎的表進(jìn)行表檢查,也會同時更新關(guān)鍵字統(tǒng)計數(shù)據(jù)

      Repair optimize需要有足夠的硬盤空間,否則可能會破壞表,導(dǎo)致不能操作,那就要用上repair,注意INNODB不支持repair操作

      生成亂序的id

      方法:

      使用預(yù)設(shè)表

      比如id和toid的映射

      其中id是固定的,toid是隨機(jī)的。

      然后在redis或memcache中記錄一個指針值,指向id

      當(dāng)要獲取一個新toid的時候,取出指針值,加1,然后去預(yù)設(shè)表中獲取toid

      查詢和索引

      查詢的時候必須要考慮到如何命中索引

      比如有幾個小招:

      1 不要在表達(dá)式中使用索引列

      where mycol *2 < 4

      2 不要在like模式的開始位置使用通配符%

      where col_name like ‘%string%’

      不如

      where col_name like ‘string%’

      3 避免過多使用mysql自動轉(zhuǎn)換類型,有可能無法用到index

      比如

      select * from mytbl where str_col=4

      但是str_col為字符串,這里其實就隱含了字符串變化

      應(yīng)該使用

      select * from mytbl where str_col=’4’

      索引比表還大就不需要建立索引了嗎

      索引是按照順序排列的。所以即使索引比表大,也是可以加快查詢速度的。

      當(dāng)然如果索引比表還大首要的任務(wù)必須是檢查下索引建立地是否有問題

      Char和varchar如何選擇

      char是定長,varchar變長 
      varchar除了設(shè)置了數(shù)據(jù)之外,還多使用1兩個字節(jié)定義了數(shù)據(jù)實際長度。

      char會在后面空余的行填充上空字符串

      myisam建議使用char。myisam中有個靜態(tài)表的概念。使用char比使用varchar的查詢效率高很多。

      innodb建議使用varchar。主要是從節(jié)省空間的方面考慮

      多個TimeStamp設(shè)置默認(rèn)值

      一個表中至多只能有一個字段設(shè)置CURRENT_TIMESTAMP

      對于下面的需求:

      一個表中,有兩個字段,createtime和updatetime。

      1 當(dāng)insert的時候,sql兩個字段都不設(shè)置,會設(shè)置為當(dāng)前的時間

      2 當(dāng)update的時候,sql中兩個字段都不設(shè)置,updatetime會變更為當(dāng)前的時間

      這樣的需求是做不到的。因為你無法避免在兩個字段上設(shè)置CURRENT_TIMESTAMP

      解決辦法有幾個:

      1 使用觸發(fā)器。

      2 將第一個timestamp的default設(shè)置為0

      3 老老實實在sql語句中使用時間戳。

      查詢數(shù)據(jù)表有多少行,多少容量

      不要使用select count(*)

      使用show table status like ‘table_name’  但是innodb的話會有50%左右的浮動,是個預(yù)估值

      AUTO_INCREMENT的設(shè)置

      1 不要設(shè)置為int,請設(shè)置為unsinged int,auto_increment的范圍是根據(jù)類型來判定的

      2 auto_increment數(shù)據(jù)列必須要有索引,并且保證唯一性。

      3 auto_increment必須有NOT NULL屬性

      4 auto_increment可以使用

      UPDATE table SET seq = LAST_INSERT_ID(seq -1)

      mysql的表示時間的字段用什么類型

      表示時間可以使用timestamp和datetime來使用

      datetime表示的時間可以從0000-00-00:00:00 到9999-12-31:00:00:00

      timestamp表示的時間為1970-01-01 08:00:01到2038-01-19 11:14:07

      timestamp占用的空間比datetime少,且可以設(shè)置時區(qū)等功能,所以能使用timestamp的地方盡量使用timestamp

      使用timestamp還可以設(shè)置

      [ON UPDATE CURRENT_TIMESTAMP]

      [DEFAULT CURRENT_TIMESTAMP]

      myisam和innodb支持外鍵

      myisam不支持外鍵,innodb支持;

      如果你使用創(chuàng)建外鍵的命令對myisam的表操作,操作不會返回失敗,但是是沒有外鍵關(guān)聯(lián)建立起來的。

      對一個字段加減語句

      經(jīng)常有需求對一個字段加減會使用

      update table set a = a+1

      這樣是對的

      但是如果這樣設(shè)置:

      select a from table

      取出數(shù)據(jù)后a為1

      update table set a =2

      這樣會導(dǎo)致如果在select和update之間有其他事務(wù)操作修改這個字段的話,導(dǎo)致最后的設(shè)置可能出錯。

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)