Php MySQL-请帮助优化,我不知道如何优化
如果你们中的一些人能够帮助优化我的表,我将不胜感激,因为由于以下问题,这些表目前需要非常长的时间才能执行: 主表:Php MySQL-请帮助优化,我不知道如何优化,php,mysql,query-optimization,Php,Mysql,Query Optimization,如果你们中的一些人能够帮助优化我的表,我将不胜感激,因为由于以下问题,这些表目前需要非常长的时间才能执行: 主表: game { game_id [PRIMARY KEY] *team_id *stadium_id home_score opponent_score date tour half_home_score half_opp_score attendance referee_id coach_id capta
game {
game_id [PRIMARY KEY]
*team_id
*stadium_id
home_score
opponent_score
date
tour
half_home_score
half_opp_score
attendance
referee_id
coach_id
captain_id
}
players (contains all players that played in the game) {
*game_id
*team_id
*player_id
position
number
}
tries, conversions, penalties, dropgoals {
*player_id
*game_id
*team_id
}
team {
team_id [PRIMARY KEY]
country
}
player {
player_id [PRIMARY KEY]
*team_id
name
surname
fullname
DOB
POB
school
height
weight
position
}
我倾向于将所有的*_id都设置为类型(UNSIGNED INT[5])?我有点不确定是否需要未签名
根据需要的大小,所有文本都是VARCHAR(500..200)
我可以使用日期类型,例如DOB、日期
“*”-指在其他表中作为主键的外键
一页特别慢,发生的情况如下:
该页面显示特定游戏的玩家阵容,因此我的查询如下:
从玩家表中选择所有玩家id、编号和位置,其中游戏id是特定游戏的id
表中的getTries(玩家id、游戏id)
.
.
从dropgoals表中获取dropgoals(玩家id、游戏id)
从玩家表中获取玩家名称(玩家id)
将接收到的详细信息输出到表
<tr>
<td>tries</td>...<td>dropgoals</td><td>position</td><td>player's name</td><td>number</td></tr>
尝试…dropgoalspositionplayer的姓名号码
如果有人能指出一些明显的陷阱,我将不胜感激
问候
//编辑
我使用了下面的查询,但它只输出在Trys表中找到的行,我希望它输出找到的所有玩家,但只计算他得分的尝试次数,如果没有为该玩家得分,它仍然必须输出玩家详细信息,但对于得分的尝试,它必须输出0
我不确定我的查询是否正确:
选择ps.player_id、ps.position、ps.number、p.name、p.姓氏、COUNT(*)作为从玩家ps、玩家p、trytes中选择的triesNo,其中p.player_id=ps.player_id和ps.game_id='$game_id'和ps.team_id为空,trytes.player_id=ps.player_id按ps.player_id分组按ps.player_id按ps.number排序
我希望它也能在球员没有尝试得分时返回球员,现在它只会在球员尝试得分时返回球员
有人能帮忙吗?Unsigned将使您拥有一个更大(两倍大小)的int-id列。缺点是,您将无法使用负ID(无论如何,这是邪恶的)。从它的声音来看,您可能(a)在页面加载上运行过多查询,或者(b)如果同时从多个表中选择,则无法在适当的字段上连接数据 例如,根据您所说的,您似乎正在运行一整套查询以获取玩家姓名,但您可以将其与第一个查询合并,如下所示:
SELECT ps.player_id, ps.position, ps.number, p.name
FROM players ps, player p
WHERE p.player_id=ps.player_id
该查询连接了player_id上的两个表,最终得到一个id/position/number/name的player数组
您可能还需要查看索引。最好为WHERE子句中使用的任何字段(尚未使用主键索引的字段)编制索引
正如其他人所说,您需要更具体地说明哪些查询运行缓慢。发布您要优化的SQL和解释选择的输出如何……您的结构看起来非常简单。正如Greg提到的,给出运行缓慢的特定查询。另外,发布有索引的列。但是unsigned对执行速度有任何影响吗?谢谢你的建设性意见,因为我完全忘记了合并这样的查询,我现在将尝试这样做,并返回一些仍然运行缓慢的查询。