MySQL从数据库效率和时间消耗中选择

MySQL从数据库效率和时间消耗中选择,sql,mysql,Sql,Mysql,其中哪一项花费的时间最少 一, 二, 第二个保证在几乎任何数据库管理系统上都会大大加快速度。如果表中只有几行,您可能不会注意到差异,但是当您有数千行时,它将变得非常明显 一般来说,您应该让数据库管理系统处理所需的筛选、分组和排序;数据库管理系统就是为了完成这些任务而设计的,并且通常是高度优化的 如果这是一个经常使用的查询,请确保在“唯一用户名”字段上使用索引 正如soulmerge提到的,您确实需要小心SQL注入。当您在它时,您应该认真考虑存储密码散列,而不是密码本身;第二个保证在几乎任何数据库

其中哪一项花费的时间最少

一,

二,


第二个保证在几乎任何数据库管理系统上都会大大加快速度。如果表中只有几行,您可能不会注意到差异,但是当您有数千行时,它将变得非常明显

一般来说,您应该让数据库管理系统处理所需的筛选、分组和排序;数据库管理系统就是为了完成这些任务而设计的,并且通常是高度优化的

如果这是一个经常使用的查询,请确保在“唯一用户名”字段上使用索引


正如soulmerge提到的,您确实需要小心SQL注入。当您在它时,您应该认真考虑存储密码散列,而不是密码本身;第二个保证在几乎任何数据库管理系统上都能显著提高速度。如果表中只有几行,您可能不会注意到差异,但是当您有数千行时,它将变得非常明显

一般来说,您应该让数据库管理系统处理所需的筛选、分组和排序;数据库管理系统就是为了完成这些任务而设计的,并且通常是高度优化的

如果这是一个经常使用的查询,请确保在“唯一用户名”字段上使用索引


正如soulmerge提到的,您确实需要小心SQL注入。当您在它时,您应该认真考虑存储密码散列,而不是密码本身;.

第二个肯定是很多很多!,更快。除非该表只包含几行

这不仅是因为SQL server在过滤方面非常高效,它们可以使用1中的循环无法访问的索引等,而且还因为1可能会导致大量数据从服务器传输到php应用程序

此外,解决方案1将导致用户的所有登录凭据在线路上传输,从而使他们在线路的某个位置受到可能的窥探。。。请注意,如果SQL server和应用程序之间的通道不安全,解决方案2也会带来潜在的安全风险;这种风险有所降低,因为并非每次登录尝试都会传输100%的帐户详细信息


除了这个涉及内部安全的风险之外,还有来自完全外部攻击者的SQL注入的真正风险,正如其他人在本文中指出的那样。但是,可以通过转义最终用户提供的字符串中包含的单引号字符来完全解决这一问题。

数字2肯定会非常非常!,更快。除非该表只包含几行

这不仅是因为SQL server在过滤方面非常高效,它们可以使用1中的循环无法访问的索引等,而且还因为1可能会导致大量数据从服务器传输到php应用程序

此外,解决方案1将导致用户的所有登录凭据在线路上传输,从而使他们在线路的某个位置受到可能的窥探。。。请注意,如果SQL server和应用程序之间的通道不安全,解决方案2也会带来潜在的安全风险;这种风险有所降低,因为并非每次登录尝试都会传输100%的帐户详细信息


除了这个涉及内部安全的风险之外,还有来自完全外部攻击者的SQL注入的真正风险,正如其他人在本文中指出的那样。但是,可以通过转义最终用户提供的字符串中包含的单引号字符来完全解决这一问题。

当然,除非输入n=='或1或',并且输入p=='或1或',这可能需要更长的时间…还应确保检查字段是否有SQL注入附件,当然,enteredN=='或1或',enteredP=='或1或',这可能需要更长的时间…还要确保检查SQL注入攻击的字段如果网络窥探是一个问题,解决方案1是一个灾难。。。但是2也不是那么热门,因为一个用户的id和密码仍然被发送到数据库-如果你要交换敏感数据,你真的需要与数据库建立安全连接@亚历克斯。是的,同意!2是一个安全风险,如果只是一点点减少,因为100%的帐户详细信息不会在每一次登录尝试中传输。我只是想找更多的理由让我看起来不好-如果网络窥探是一个问题,那么解决方案1就是一个灾难。。。但是2也不是那么热门,因为一个用户的id和密码仍然被发送到数据库-如果你要交换敏感数据,你真的需要与数据库建立安全连接@亚历克斯。是的,同意!2也是一种安全风险,如果只是因为100%的帐户详细信息没有在t上传输而稍微减少的话 他每一次登录尝试都会连线。我只是想找更多的理由让我看起来不好-
q = 'SELECT * FROM table;'
result = db->query(q)
while(row = mysql_fetch_assoc(result))
{
userName = row['userName'];
userPassword = row['userPassword'];
if (enteredN==userName && enteredP==userPassword)
return true;
return false;
}
q = 'select * from table where userName='.enteredN.' and userPassword='.enteredP.';'
...