2011-03-31 74 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查询的表需要额外加入(塞通常与语言)