資料庫結構的設計與如何最大限度的利用索引

来源:http://www.cnblogs.com/wzjbk/archive/2016/06/26/5618468.html
-Advertisement-
Play Games

舉個例子如一張消息表 結構如些 Id (自增主鍵) Content(內容) UserId(說話人Id) IsWonderful(是否是精彩發言) Top(是否置頂) IsBarrage( 是否是彈幕) 當這個結構的表 數據還少時取 經常發言 置頂發言 和彈幕 速度比較快 但是數據一多 30多萬條的時 ...


舉個例子如一張消息表

結構如些  Id (自增主鍵) Content(內容)    UserId(說話人Id)  IsWonderful(是否是精彩發言)   Top(是否置頂) IsBarrage( 是否是彈幕)

當這個結構的表 數據還少時取 經常發言 置頂發言 和彈幕 速度比較快

但是數據一多 30多萬條的時候查找數據

37w條數據 中查找經常發言

用時4.753 秒   

雖然加上索引之後可以找0.1秒鐘找到數據  但是每加一個索引  寫入速度就變慢一點  後面還有 彈幕置頂也要查找 豈不是都要加索引  這樣寫入非常慢尤其是這樣表寫入頻繁的情況下,更說明這張表的設計有很大的問題

這樣時候在在建一張表 結構是

    Id 主鍵

           Type 類型 1-精彩發言  2-置頂,3-彈幕

    ChatMessageId  消息表Id

 

接下來 用事實驗證的時候了

接下來 我們看下分析

完美的利用了已經存在的主鍵索引

 

在37w條數據 中找到經常發言只用了0.0001秒 而且也沒增加新的索引  怎麼看到這裡是不是若有所思了

以後設計資料庫的時候不要老想的增加新的索引(除非寫入和改變很少的情況下)  儘量利用自帶的主鍵索引

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 工具:顯示快捷鍵幫助:Ctrl+Shift+LQuick access:Ctrl+3自定義ShortKeys:Window > preference > 搜索框中輸入“keys” 或者 Ctrl+3 輸入“keys” 尤其是Quick access(Ctrl+3)這個工具非常實用,可以找到任何一個菜 ...
  • 1.實現方式 1.1使用HttpUrlConnection 1.2使用HttpClient 1.3使用Socket,比如:豌豆莢,聊天工具 2.通訊渠道 2.1 WLAN(wi-fi),100米左右的數據傳輸 2.2 手機APN接入點(基站) 2.2.1 wap的方式,中國特色,首先會連接電信運營商 ...
  • IOS的用戶體驗做的很好,其中一點很重要的地方就是動畫效果。 最近在學習Android的Animation,簡單實現了一個IOS相機濾鏡退出的動畫: 佈局文件:activity_animation_demo.xml 佈局未考慮各個解析度,只是為了實現動畫邏輯,(代碼測試是在720P解析度的手機上) ...
  • 能添加圖標的label 效果 源碼 https://github.com/YouXianMing/UI-Component-Collection 中的 IconEdgeInsetsLabel 細節 1. 繼承自UILabel 2. 重載了UILabel的兩個方法 ...
  • 1.數據區分 手機端:常量存儲 伺服器端:資料庫建表存儲 2.數據來源 android,ios,pc,wap 3.數據採集,數據挖掘 IMEI:設備編號 IMSI:SIM卡編號 4.數據加密 4.1RSA演算法 4.2簡單代碼處理:時間戳(SimpleDateFormat)+隨機值(Random) 4 ...
  • Paxos演算法是萊斯利·蘭伯特(Leslie Lamport)1990年提出的一種基於消息傳遞的一致性演算法。Paxos演算法解決的問題是一個分散式系統如何就某個值(決議)達成一致。在工程實踐意義上來說,就是可以通過Paxos實現多副本一致性,分散式鎖,名字管理,序列號分配等。比如,在一個分散式資料庫系 ...
  • mysql -u root -p 輸入密碼進入資料庫 show database; 查詢當前庫 use databasename 切換到某個庫 show tables; 列出當前資料庫的表 desc tbalename 列出表的欄位 select user() + + | user() | + + ...
  • 一些需求是原生Flume無法滿足的,因此,基於開源的Flume我們增加了許多功能。 EventDeserializer的缺陷 Flume的每一個source對應的deserializer必須實現介面EventDeserializer,該介面定義了readEvent/readEvents方法從各種日誌 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...