php - 按 slug 查询还是按 id 查询?

标签 php mysql cakephp

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

我正在使用 cakePHP,特别是,所以如果有任何特定于蛋糕的答案,我们将不胜感激,但不是必需的。

最佳答案

如果您绝对肯定 slug 不会改变,则可以使用它。但是数字可能更快更安全(这是肯定的)。

我刚刚在具有 1 000 000 行的数据库上运行查询,您可以看到按 ID 快 230 倍(尽管主题未编入索引)。除此之外,就像 Col Shrapnel 说的,如果你改变话题怎么办?您的 URL 将被破坏,并且您无法记住主题的每一次更改。 数字就是数字,计算机与数字打交道:) 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) 

关于php - 按 slug 查询还是按 id 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5501961/

相关文章:

php - Laravel迁移数组类型(数据库列存储数组)

CakePHP 保存多行

php - 有相对复杂的表单和提交流程。需要减肥方面的帮助

mysql - 如何简化/改进这个 mysql 删除查询

带有条件检查的 PHP MySQL PDO TextArea Where 子句

.htaccess - 在 Cakephp 2.0 中使用 .htaccess 进行 URL 重定向

php - MySql 获取列中每个 id 的列表,其中搜索 id 是一个数组

javascript - 当使用 JQuery 附加生成表时通过 AJAX 删除记录

php - 从数据库中获取同一页面中的结果

MySql - 如何制作左连接表并按日期降序从表中获取前 1 个订单?