我在mySQL中有100,000
用户的db。在该数据库中,我有ID,username,Fname,Lname
列等。当www.example.com/Jim
或www.example.com/123
(其中JIM
是用户名,而123
是用户表中的ID)
我正在使用mySQL查询:select * from users where ID = 123 OR username = Jim
我正在php中的查询上方执行。上述查询的输出是:
| ID | Username | fname | lname |
+----+----------+--------+---------+
|123 | jim | Jim | Jonson |
我的问题是花费大量时间在DB中选择用户名或ID。
我使用了以下查询
SELECT * FROM
用户USE INDEX (UsersIndexId) where id=123
这种调用索引的正确方法是正确的吗?
EXPLAIN SELECT * FROM `users` WHERE ID =327
op
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users Const PRIMARY,UsersIndexId PRIMARY 4 const
1
i sugest you you the It:mySQL如何使用索引
引用第一段:
索引用于快速找到具有特定列值的行。 没有索引,MySQL必须从第一行开始,然后阅读 在整个表中找到相关的行。越大 桌子,费用越多。如果表有列的索引 有问题的是,MySQL可以迅速确定寻求在 数据文件的中间不必查看所有数据。如果 一张桌子有1,000行,这比阅读快100倍 依次。
应该有助于加快您的搜索。
(编辑:更新了链接到SQL文档的较新版本)
ps:更具体地说,列索引可能是您想要的。您可以在此处找到有关添加索引的更多信息:创建索引语法
要完成@kjartan答案,您可以尝试以下内容:
ALTER TABLE users ADD INDEX id_i (`ID`);
ALTER TABLE users ADD INDEX username_i (`Username`);
您的查询应该更快。