原创 高性能索引優化策略(三):索引列的次序該如何排列更合適?

在衆多困擾索引使用的原因中,其中最常見的一個是索引中列的次序。正確的次序依賴於使用索引的查詢,因此需要考慮怎樣選擇索引次序以便數據行的排序火分組能夠從中受益(這個僅在二叉樹索引有用,哈希索引和其他類型的索引並沒有像二叉樹索引那樣對數據進行排

原创 高性能索引優化策略(四):聚集索引和非聚集索引數據結構及優劣對比

聚集索引並不是一個單獨的索引類型,實際上是一種數據存儲的方式。聚集索引的實現細節各有不同,在InnoDB引擎中,聚集索引實際上是將索引和數據行使用同樣的結構存儲在一個二叉樹中。 如果數據表中有聚集索引,則數據行實際上是存在所以的葉子節點。“

原创 多個索引是獨立建立索引還是建聯合索引?

通常會對多列索引缺乏理解,常見的錯誤是將很多列設置獨立索引,或者是索引列使用錯誤的次序。我們在下一篇討論索引列次序的問題,首先看一下多列獨立索引的情況,以下面的表結構爲例: CREATE TABLE test ( c1 INT, c

原创 高性能索引優化策略(一):隔離數據列和前綴索引

正確地創建和使用索引對於查詢性能十分重要。由於存在很多種特殊場景的優化和行爲,因此=有很多種方式去有效選擇和使用索引。因此,決定如何使用索引這一項技能是需要經驗和時間的積累去培養的。以下會介紹一些如何有效使用索引的方法。 隔離數據列 通常,

原创 索引好處有哪些?索引總是最佳的解決方案嗎?

索引使得服務器能夠快速定位到數據表中的位置,但這不是索引的全部好處。基於索引創建的數據結構的不同,索引還有一些其他的好處。 二叉樹索引是最常用的一種方式,通過將數據有序排列,MySQL可以把這個特點利用在ORDER BY和GROUP BY上

原创 數據表還有哈希索引,沒聽過?

哈希索引是基於哈希表構建的,僅在按列進行精確查找時有用。對於每一行,存儲引擎都給指定的索引列生成了一個哈希值,這個哈希值與其他行相比,由於索引列的值不同而不同。存儲引擎將這個哈希值存儲在索引中,並且在哈希表中存儲了一個指向數據行的指針。 在

原创 做了幾年後端開發,你真的瞭解B+樹索引嗎?

二叉樹(B-Tree)索引 如果沒有明確指定索引類型,那大家一般都是指二叉樹索引—通常使用二叉樹數據結構存儲索引數據。大多數的MySQL存儲引擎都支持這種索引類型。但Archive引擎是一個例外,直到MySQL 5.1版本後纔開始支持索引—

原创 匹配字符串,正則表達式用了就高大上了?

前言:作者舉了一個例子來表名在實際開發中,做字符串檢測時,會使用正則表達式;但是有些時候壓根沒必要,而導致這樣的原因其實是開發者的基礎不夠紮實。看似很牛地使用了正則表達式解決了問題,而實際上存在更簡單的方法。因此,程序員的紮實的程序語言基

原创 索引的基礎概念(一)

最近面試和不少年輕的後端聊,發現很多人做了2-3年後端,居然沒用過索引。因此下載了《High Performance MySQL》(3rd edition,即《高性能MySQL》第三版,國內中文版已出版)。摘取裏面的索引一章分開來翻譯,希

原创 讓人眼花繚亂的無限繼承

Python語言的一個優勢是簡潔易用。是否簡潔易用僅僅是Python語言本身的一個話題,但“好消息”是如果你想創造那種一大堆繼承、混亂的內部關係的代碼,也是可以的! 今天煩人的代碼來自於驗證某些math-y數學分析代碼。一開始,他們是發現文

原创 年度最佳數據庫設計者——通過數據表擴展列支持多語言

內容管理系統(CMS)在軟件開發中是一個“有趣的”領域。一方面,在覈心功能上,大部門業務功能都是CRUD操作;另一方面,90%的問題是很容易處理的,但是剩下的10%卻是讓你十分抓狂的。 這就是爲什麼大部分大型CMS項目都支持了插件式的架構—

原创 如何在你的日誌系統中挖個坑?

瓦倫西亞最近給哈維的C++項目做了不少貢獻。特別是把方法調用中複雜數據結構傳值改爲了引用傳遞後,解決了不少的性能問題——尤其在某些特定的編譯器上。 “這很簡單”,瓦倫西亞以爲,“任何人都能做這樣的事情。”然而,隨着他們對代碼的深入…… 最早

原创 不要爲了使用設計模式而使用設計模式,這並不牛!

前言:設計模式幾乎是程序員必修的一門課程,而能夠深入理解和運營設計模式更是程序員向架構師進階的必備技能。但是,實際上,很多人對設計模式的理解僅僅停留在表面,甚至還因爲代碼中使用了設計模式而洋洋自得——而根本不管這是否必要! 理解GOF(

原创 小心TypeScript編寫出無用的代碼

本文翻譯自The Daily WTF網站,原作者的大意是TypeScript相比JavaScript確實有很多優勢,但是這個優勢其實是編譯器帶來的。在編寫TS代碼的時候應當重視編譯器的警告,因爲有些代碼轉換成JS後可能並不會有錯誤,但是實

原创 編程趣事——加速循環(The Speed-up Loop)

文章翻譯自:The Daily WTF “你對這份機會怎麼看?”本(Ben)的人力經紀人詢問他。本猶豫了一小會,這確實是他尋找的工作職位。然而,畢竟他從1989年11月開始就沒有工作了,至今已經近三個月了。他的內心告訴他還需要再想想再決定。