將兩個INT
主鍵(複合鍵)「打包」爲單個BIGINT
主鍵是否高效?它可以在mySQL中自動完成還是需要在客戶端(PHP,C++)中完成?將`INT`主鍵包裝成單個`LONG`
我正在創建一個方向圖,在mySQL中將用戶ID互相連接(例如,用於朋友查找器)。
MySQL支持8字節BIGINT
S和4字節INT
S,所以封隔器可能看起來像:
id_edge = ((BIGINT)id_from)*pow(2,31) + ((BIGINT)id_to)
如何的大男孩(FB,LI)辦呢?有三個「獨立」字段更容易或更好:
CREATE TABLE `things`.`connections` (
`id_edge` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'Need a single pk for gii\n' ,
`id_from` INT NOT NULL ,
`id_to` INT NOT NULL ,
....
「*每列應存儲1條數據 - 不多也不少。*」 - 有一個例外,['SET'類型](http://dev.mysql.com/doc/refman/5.1 /en/set.html)。 – binaryLV