数据库使用
indexes.这样它可以快速找到与给定用户ID相关的数据.
取决于索引结构,占用空间等…有一个增益,即它不是搜索N列,而是搜索 – 例如 – log(N).通过二十亿行的二分法搜索
N = 100,000,000,000
将会
Search(N) : search log2(N) = search (36 rows)
相反,搜索10 ^ 12行,只需要分析36行.
在你提到的情况下,朋友,每个用户可能有几个朋友,所以
user1 => (userX, userY, userZ, ...)
userX => (userU, userV, user1, ...)
意思是user1是userX,userY等的朋友……
即每个用户没有唯一的索引.但是每个用户都有一个唯一的索引.
在Mysql上会是
UNIQUE(user1,user2)
这意味着情侣(user1,user2)只在表格中出现过一次.语法是
CREATE UNIQUE INDEX friendsindex ON friends(user1,user2)
friendsindex是索引名称,朋友是表.或者如您所说,将表主键声明为(user1,user2)(每个表的主键是唯一的).
–
赢得游戏的策略基于相同的原则,该策略包括找到给定对象的确切价格.假设价格在1到10000之间.你告诉价格,处理程序说或 – .您必须尽可能少地尝试查找价格.例如.价格是6000.
您可以从1开始并将所有价格都提供到6000(即6000次尝试),但您也可以继续进行二分法
>你:5000
>游戏玩家:
> 7500或(10000 – 5000)/ 2
> –
> 6250或(7500 – 5000)/ 2
> –
>等……
在每次迭代时将剩余范围除以2.而不是6000次尝试,您可以在12次尝试中找到(log2(6000)).
–
例如,如何在2 ^ x = 1024中找到x?或者x = log2(1024)表示基数2中的对数为1024(答案:10).在我们的故事中,具有基于二叉树的索引的1024行表需要10次尝试(最大)才能找到正确的元素(而不是1024最大值).