2011-03-31 87 views
4

通常,當我在URL中創建需要slu applications的應用程序時,我會通過數據庫中的slu query查詢以獲取內容(當然,在slug字段上有一個索引)。使用典型的LAMP棧(使用PHP &MySQL),從數據庫的角度來看,這樣做有什麼優勢或劣勢?總是通過id查詢並簡單地爲sluks創建一些排序或路由會更有意義嗎?這個應用程序設計是否會帶來安全問題?通過slug查詢或通過id查詢?

我正在使用cakePHP,特別是,如果有任何蛋糕特定的答案,那將不勝感激,但不是必要的。

+1

嘗試書籤你的問題,然後編輯標題,然後利用書籤 – 2011-03-31 15:38:26

回答

0

stackoverflow.com/questions/ /查詢通過塞或 - 查詢 - by-id

如果您絕對肯定slug不會改變,您可以使用它。但數字可能更快,更安全(這是肯定的)。

我剛剛在1 000 000行的數據庫上運行查詢,可以看到ID按230倍的速度加快了速度(但未編入主題)。除此之外,就像Col Shrapnel說的那樣,如果你改變主題?你的網址將被打破,你不記得主題的每一個變化。 數字就是數字,計算機與數字工作:) JK

SELECT tid FROM `forum_threads` WHERE subject = "New BMW X5"; 
Showing rows 0 - 0 (1 total, Query took 0.0230 sec) 

SELECT tid FROM `forum_threads` WHERE tid = 19906; 
Showing rows 0 - 0 (1 total, Query took 0.0001 sec) 
+0

OK所以你說這是更快,更安全。這是有道理的,但你認爲你可以解釋爲什麼?我只是好奇。 – Nick 2011-04-01 15:28:41

+0

@尼克,我更新了我的答案。 – 2011-04-01 15:51:09

0

兩件事: 請記住,slu values值通常需要是唯一的。 此外,使用國際化的數據庫模式,SQL查詢的表需要額外加入(塞通常與語言)