Skip to content

Instantly share code, notes, and snippets.

@workmaster2n
Created April 12, 2012 16:33
Show Gist options
  • Save workmaster2n/2368906 to your computer and use it in GitHub Desktop.
Save workmaster2n/2368906 to your computer and use it in GitHub Desktop.
Confused as to the difference in speeds of these 2 queries
28,444 records
mysql> SHOW CREATE TABLE accounts\G
*************************** 1. row ***************************
Table: accounts
Create Table: CREATE TABLE `accounts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`AccountId` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`AccountIdTemp` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`HighSchoolTempId` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`IsActive` tinyint(1) DEFAULT NULL,
`IsVisible` tinyint(1) DEFAULT NULL,
`IsPaidAd` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`boolean` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`CommonName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`ShortName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`AbbreviatedName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`OtherName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`NickName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`FemaleNickName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`KeywordAlias` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`AccountTypeId` int(11) DEFAULT NULL,
`TribuneName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Division` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`ConferenceId` int(11) DEFAULT NULL,
`Address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`AddressLine2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`City` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`State` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Zip` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Zip4` int(11) DEFAULT NULL,
`Country` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Website` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`VideoLink` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`SiteProvider` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`VideoProvider` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Latitude` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Longitude` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`TimeZone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Colors` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Logo` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`LogoImage` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`MonthlyFee` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`AnnualFee` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`RadioStation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`TVStation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`TicketOfficeLink` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`TicketOfficePhone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`DST` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Mascot` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`NCES_PSS_Id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`County` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`CountyFipsId` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Phone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`PublicSchool` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`LocaleCode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`NumberOfStudents` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Enrollment_9to12` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`MaleStudents` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`FemaleStudents` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Coed` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`LowestGradeLevel` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`HighestGradeLevel` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Title1` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`SchoolType` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`SEC_Comb` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Affiliation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`SearchSortorder` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`CreationDate` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`CreatedBy` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`LastModifiedDate` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`LastModifiedBy` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`CompName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Show` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `AccountId` (`AccountId`),
KEY `Name` (`Name`),
KEY `id_name` (`id`,`Name`)
) ENGINE=InnoDB AUTO_INCREMENT=28445 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
246,544 records
mysql> SHOW CREATE TABLE players\G
*************************** 1. row ***************************
Table: players
Create Table: CREATE TABLE `players` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`IsActive` tinyint(1) DEFAULT NULL,
`IsVisible` tinyint(1) DEFAULT NULL,
`FirstName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`LastName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`HeightFeet` int(11) DEFAULT NULL,
`HeightInches` int(11) DEFAULT NULL,
`Weight` int(11) DEFAULT NULL,
`Birthday` date DEFAULT NULL,
`Gender` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`HometownCity` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`HometownState` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`HometownZip` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`HometownCountry` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`HighSchoolId` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`HighSchoolIdTemp` int(11) DEFAULT NULL,
`HighSchoolGradYear` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`CollegeYear` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Redshirted` tinyint(1) DEFAULT NULL,
`Transferred` tinyint(1) DEFAULT NULL,
`CollegeId` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`CollegeIdTemp` int(11) DEFAULT NULL,
`CollegeGradYear` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`OtherAccountId` int(11) DEFAULT NULL,
`PreviousCollegeId` int(11) DEFAULT NULL,
`CurrentTeamId` int(11) DEFAULT NULL,
`LateralRecommendationReason` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`LateralRecommendationLink` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`CreationDate` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`CreatedBy` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`LastModifiedDate` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`LastModifiedBy` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`TwitterLink` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`FacebookLink` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`PersonalWebsite` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`PlayerImage` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`FirstNameNickName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`NeulionID` int(11) DEFAULT NULL,
`OtherTeamID` int(11) DEFAULT NULL,
`OtherSportTypeID` int(11) DEFAULT NULL,
`SourceDataTypeID` int(11) DEFAULT NULL,
`PlayerTypeID` int(11) DEFAULT NULL,
`LoadID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`SameNameTeammate` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`SameNameSchoolMate` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`SD_SportID` int(11) DEFAULT NULL,
`SD_PlayerID` int(11) DEFAULT NULL,
`ZeroNCAAStats` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`ModifiedByPythonGame` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Missing2011` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Transfer2011` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`RecruitingClass` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `FirstName` (`FirstName`),
KEY `LastNAme` (`LastName`),
KEY `CollegeYear` (`CollegeYear`)
) ENGINE=InnoDB AUTO_INCREMENT=251770 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
mysql> SHOW CREATE TABLE players_to_teams\G
*************************** 1. row ***************************
Table: players_to_teams
Create Table: CREATE TABLE `players_to_teams` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`IsActive` tinyint(1) DEFAULT NULL,
`IsVisible` tinyint(1) DEFAULT NULL,
`player_id` int(11) DEFAULT NULL,
`team_id` int(11) DEFAULT NULL,
`CreationDate` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Position` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Number` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`Club` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`BT` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`BioLink` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`OtherBioLink` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`StartYear` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`EndYear` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`NeulionPlayerID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`SeasonYear` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`GamesPlayed` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
`account_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_players_to_teams_player` (`player_id`),
KEY `FK_players_to_teams_team` (`team_id`),
KEY `Position` (`Position`),
KEY `FK_players_to_teams_account_id` (`account_id`),
CONSTRAINT `FK_players_to_teams_account_id` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `FK_players_to_teams_player` FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `FK_players_to_teams_team` FOREIGN KEY (`team_id`) REFERENCES `teams` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=256003 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
1 row in set (0.00 sec)
mysql> EXPLAIN EXTENDED SELECT
-> players_to_teams.id
-> FROM
-> players_to_teams
-> INNER JOIN
-> accounts ON accounts.id = players_to_teams.account_id
-> ORDER BY accounts.Name \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: players_to_teams
type: index
possible_keys: FK_players_to_teams_account_id
key: FK_players_to_teams_account_id
key_len: 5
ref: NULL
rows: 289424
filtered: 100.00
Extra: Using index; Using temporary; Using filesort
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: accounts
type: eq_ref
possible_keys: PRIMARY,id_name
key: PRIMARY
key_len: 4
ref: mysql_development.players_to_teams.account_id
rows: 1
filtered: 100.00
Extra:
2 rows in set, 1 warning (0.00 sec)
select `mysql_development`.`players_to_teams`.`id` AS `id` from `mysql_development`.`players_to_teams` join `mysql_development`.`accounts` where (`mysql_development`.`accounts`.`id` = `mysql_development`.`players_to_teams`.`account_id`) order by `mysql_development`.`accounts`.`Name`
7.705 seconds to complete
mysql> EXPLAIN EXTENDED SELECT
-> players_to_teams.id
-> FROM
-> players_to_teams
-> INNER JOIN
-> players ON players.id = players_to_teams.player_id
-> ORDER BY players.FirstName \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: players
type: index
possible_keys: PRIMARY
key: FirstName
key_len: 768
ref: NULL
rows: 250119
filtered: 100.00
Extra: Using index
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: players_to_teams
type: ref
possible_keys: FK_players_to_teams_player
key: FK_players_to_teams_player
key_len: 5
ref: mysql_development.players.id
rows: 1
filtered: 100.00
Extra: Using where; Using index
select `mysql_development`.`players_to_teams`.`id` AS `id` from `mysql_development`.`players_to_teams` join `mysql_development`.`players` where (`mysql_development`.`players_to_teams`.`player_id` = `mysql_development`.`players`.`id`) order by `mysql_development`.`players`.`FirstName`
0.004 seconds to complete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment