Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按slug查询还是按id查询?_Php_Mysql_Cakephp - Fatal编程技术网

Php 按slug查询还是按id查询?

Php 按slug查询还是按id查询?,php,mysql,cakephp,Php,Mysql,Cakephp,通常,当我在URL中创建需要slug的应用程序时,我通过数据库中的slug进行查询以获取内容(当然,slug字段上有一个索引)。使用一个典型的LAMP堆栈(使用PHP和MySQL),从数据库的角度来看,这样做的优点或缺点是什么?总是按id查询并简单地为slug创建某种排序或路由是否更有意义?这个应用程序设计会带来任何安全问题吗 我使用的是cakePHP,特别是,如果有任何特定于蛋糕的答案,我们将不胜感激,但这不是必需的。两件事: 请记住,slug值通常需要唯一。 此外,使用i18n数据库模式,表

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

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

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

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

我刚刚在一个有1000000行的数据库上运行了查询,您可以看到by-ID快了230倍(尽管主题没有索引)。除此之外,就像炮弹碎片上校说的,如果你改变话题怎么办?您的URL将被破坏,并且您无法记住主题中的每个更改。 数字就是数字,计算机和数字一起工作:)JK


尝试将您的问题添加到书签中,然后编辑标题,然后使用bookmarkOK,这样您就可以说它更快、更安全。这是有道理的,但你能解释为什么吗?我只是好奇。
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)