我只是想改善,以避免得到克隆的結果
我的表我的數據庫結構,它坐在一個數據庫,看起來像這樣:處理來自多個表格的結果 - 有更快的方法嗎?
CREATE TABLE IF NOT EXISTS `Players`(
`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`UserID` INTEGER NOT NULL UNIQUE,
`SteamID` TEXT NOT NULL UNIQUE,
`Nick` TEXT NOT NULL,
`KlanID` INTEGER NOT NULL,
`Money` INTEGER NOT NULL,
`Kills` INTEGER NOT NULL,
`Deaths` INTEGER NOT NULL,
`Score` INTEGER NOT NULL,
`PayOrNot` INTEGER NOT NULL,
`IsNewOne` INTEGER NOT NULL,
`HUDMode` INTEGER NOT NULL,
`HUDColors` INTEGER NOT NULL,
`HUDPoz1` INTEGER NOT NULL,
`HUDPoz2` INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS `Classes` (
`ClassID` INTEGER NOT NULL PRIMARY KEY UNIQUE,
`UserID` INTEGER NOT NULL,
`Level` INTEGER NOT NULL,
`Health` INTEGER NOT NULL,
`Intelligence` INTEGER NOT NULL,
`Stamina` INTEGER NOT NULL,
`Durability` INTEGER NOT NULL
);
CREATE TABLE `Equipment` (
`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`UserID` INTEGER NOT NULL,
`Name` TEXT NOT NULL,
`Type` INTEGER NOT NULL,
`Time` INTEGER NOT NULL,
`NumberOfUses` INTEGER NOT NULL
);
它是專爲反恐精英服務器的插件。它引入了一些額外的功能,如選擇自己的班級,接收額外功率的設備,調平系統等等。我需要獲得幾乎所有的數據存儲在那裏。問題是,每個玩家的裝備數量是未知的。因此,我必須弄清楚如何讓這些信息儘可能最優化。
現在,我的查詢看起來是這樣的:
SELECT DISTINCT Players.SteamID,Players.Nick,Players.KlanID,Players.Money,Players.Kills,Players.Deaths,Players.Score,Players.PayOrNot,Players.IsNew,Players.HUDMode,Players.HUDColors,Players.HUDPoz1,Players.HUDPoz2,
Classes.Name,Classes.Level,Classes.Health,Classes.Intelligence,Classes.Stamina,Classes.Durability,
Equipment.Name,Equipment.Type,Equipment.Time,Equipment.NumberOfUses
FROM Players
INNER JOIN Equipment ON Players.UserID = Equipment.UserID
INNER JOIN Classes ON Equipment.UserID = Classes.UserID
WHERE Players.UserID=%d
Here are some sample results
(不要被一些的話害怕在那裏 - 我來最初來自波蘭的需要已經齋翻譯的東西,突出顯示)
每當地圖發生變化時,每個玩家都必須接收這些數據+在整個地圖中可能會有一些新的地圖。
正如你所看到的,由於INNER JOIN特性,有一些字段拷貝。幸運的是,我能夠處理結果,因爲我知道類的數量,所以我從[row%number_of_classes]行和[行< number_of_classes]行獲取設備行。但是,我覺得可以做得更好。我正在考慮分別從每個查詢中獲取結果,但這會使查詢數量增加三倍。也許我必須重建整個SQL結構?或者,這可能是最好的方式嗎?
(1)你的問題太複雜了。 (2)您的代碼無法閱讀。 (3)選擇您真正使用的數據庫。 –
完成。問題本身很簡單,我只是添加了一些解釋來澄清我的意圖是什麼 – MAGNET
問問題不僅僅是問題太廣泛。 (沒有人知道你的機器有多快。) –