将facebook信息有效地存储在数据库中以供将来查询

时间:2016-04-01 18:53:39

标签: php mysql sql database facebook

我正在创建一个网站,可以让用户通过Facebook登录,当用户登录时,我的数据库会存储他/她从Facebook获取的信息。

创建表的SQL代码是:

CREATE TABLE facebook_users (
    user_id BIGINT NOT NULL, 
    username varchar(255),
    firstname varchar(255),
    lastname varchar(255),
    email varchar(255), 
    PRIMARY KEY (user_id)
)

facebook提供的一行信息的例子是:

user_id:    241123463541244
username:   John Smith
firstname:  John
lastname:   Smith
email:      johnsmith1977@gmail.com

每次用户登录时,我的网站都会检查该user_id是否已存在行,如果没有,则会创建该行并插入相应的信息:

$user_id = 241123463541244;//obtained from facebook via the access_token

$sqlStatement = "SELECT EXISTS(SELECT 1 FROM table1 WHERE user_id = ".$user_id.")";
$sqlStatementPrepared = $conn->prepare($sqlStatement);
$sqlStatementPrepared->execute();

$row = $sqlStatementPrepared->fetch();

if ($row === false)
{
    //code that inserts a new row into the facebook_users table     
}

我担心的是,当数据库增长到超过100万行(或1000万行等)时,当前的user_id会导致未来查询出现速度问题,特别是考虑到新的facebook会一个接一个地创建行用户第一次登录,这意味着user_id值不是递增或递减的顺序。

问题:当数据库增长到超过100万行时,当前的MySQL格式是否会导致未来查询的速度问题?如果是这样,我可以使用更好的方法来提高性能吗?

0 个答案:

没有答案