Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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处理大型mysql表以进行登录验证_Php_Mysql_Database_Codeigniter_Optimization - Fatal编程技术网

如何使用php处理大型mysql表以进行登录验证

如何使用php处理大型mysql表以进行登录验证,php,mysql,database,codeigniter,optimization,Php,Mysql,Database,Codeigniter,Optimization,我正在使用codeigniter框架进行一个项目。有不同类型的用户。现在我们有4种用户类型。我为每个用户使用不同的注册表,比如 注册\表格\用户\类型1 注册\表格\用户\类型2 注册\表格\用户\类型3 注册\表格\用户\类型4 但现在我使用的是一个带有用户名和密码输入字段的登录表单。我想创建一个用于登录身份验证的表。该表如下所示 登录表(用户名、密码、用户类型、注册id) 但我担心网站。因为不同类型的用户将超过1000000个。我如何编写mysql查询以更快地完成我的网站。我需要一些建议,请

我正在使用codeigniter框架进行一个项目。有不同类型的用户。现在我们有4种用户类型。我为每个用户使用不同的注册表,比如

注册\表格\用户\类型1

注册\表格\用户\类型2

注册\表格\用户\类型3

注册\表格\用户\类型4

但现在我使用的是一个带有用户名和密码输入字段的登录表单。我想创建一个用于登录身份验证的表。该表如下所示

登录表(用户名、密码、用户类型、注册id)


但我担心网站。因为不同类型的用户将超过1000000个。我如何编写mysql查询以更快地完成我的网站。我需要一些建议,请帮助我。

我建议首先尝试并规范您的数据库设计。有4个不同的表可能有相似的数据(类型除外),这似乎很奇怪。通常情况下,用户会有一个表(USER),在表中用户有一列表示类型本身或类型表的外键


通过使用单用户表,您就可以利用数据库优化(索引一个)并将开销降至最低。

您的数据库模式未规范化,请将此模式与innoDB engine一起使用

CREATE TABLE `user_group` (
`id` tinyint NOT NULL AUTO_INCREMENT,
`label` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
);

CREATE TABLE `user_account` (
`id` int NOT NULL AUTO_INCREMENT,
`gid` tinyint NOT NULL,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`gid`) REFERENCES user_group(`id`) ON DELETE RESTRICT ON UPDATE CASCADE
);

嗨,你知道谷歌的“数据库索引”吗;虽然每个用户类型使用不同的表是不好的设计,但用户只能使用一个
,用户类型使用一个
,查看联合查询。因为您的数据被拆分为4个表,所以您所能做的可能很少(如果您的索引设置正确的话)这将加快数据检索。@Nes:CRON在这方面有什么帮助?非常感谢您的建议。您是对的。但我不能这样做。因为每个用户类型的注册表结构都不同。我正在为每个用户类型存储注册表中的不同值。我想您可以理解我要做的事情。您可以这样做也许使用sqlfiddle可以更好地向读者展示当前的设计,也许可以提供更好的设计谢谢。这很有帮助。从你的回答中,我得到了一些非常有用的想法。但是我为所有用户使用了一个全局登录表单,有两个输入字段,如用户名和密码。没有用于选择用户类型的字段。我不想这样做为选择用户类型提供任何选项。每个用户类型都有这么多用户。我如何编写查询以获得更快的结果?每个用户类型的注册表结构都不同。你能帮我吗?我对数据库不太在行。我想提高我的数据库知识。我怎样才能学好英语。请给我一些建议。