不允許使用主鍵以外的索引?
老師說:“基本不允許建主鍵以外的索引 ,堅(jiān)決不允許用JOIN?GROUP”,
不太理解哦,我們網(wǎng)站經(jīng)常使用各種非主鍵索引,網(wǎng)站查詢性能也飛快(得意)。要不讓用,只有主鍵,網(wǎng)站會很慢的了。求解釋!
老師說:“基本不允許建主鍵以外的索引 ,堅(jiān)決不允許用JOIN?GROUP”,
不太理解哦,我們網(wǎng)站經(jīng)常使用各種非主鍵索引,網(wǎng)站查詢性能也飛快(得意)。要不讓用,只有主鍵,網(wǎng)站會很慢的了。求解釋!
2015-02-09
舉報(bào)
2015-02-09
如果寫入數(shù)據(jù)比較大,的確不用普通索引(非主鍵)更好。非主鍵索引是和數(shù)據(jù)行單獨(dú)存儲的,每次寫入數(shù)據(jù)時(shí),除了更新數(shù)據(jù)行(包括了主鍵),還要額外更新非主鍵索引,會降低寫處理的性能,因此如果寫入數(shù)據(jù)量很大,不宜使用非主鍵索引。
此情況下,通過將數(shù)據(jù)緩存在redis、mongo、memcached等nosql中,實(shí)現(xiàn)查詢的優(yōu)化。以及通過各種代碼緩存分布式(分庫分表分片)等策略、包括業(yè)務(wù)邏輯,最終使得查詢性能也能得到較好的保證,或者將各種查詢轉(zhuǎn)化為依賴數(shù)據(jù)主鍵的查詢都能保證查詢也有較好的性能。