通过slug查询或按id查询?

时间:2011-03-31 15:02:58

标签: php mysql cakephp

通常,当我在URL中创建需要slug的应用程序时,我通过数据库中的slug查询以获取内容(当然,在slug字段上有索引)。使用典型的LAMP堆栈(使用PHP和MySQL),从数据库的角度来看,这样做有什么优势或劣势?总是通过id查询并简单地为slug创建一些排序或路由会更有意义吗?这个应用程序设计是否会造成任何安全问题?

我正在使用cakePHP,特别是,如果有任何特定于蛋糕的答案,那将是值得赞赏的,但不是必需的。

2 个答案:

答案 0 :(得分:0)

两件事: 请记住,slug值通常需要是唯一的。 此外,使用i18n数据库模式,表上的SQL查询需要额外的Join(slug通常与语言相关)

答案 1 :(得分:0)

如果你绝对肯定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)