POLL: Largest SQL Table

tim_m

i'm so nice
Joined
Feb 10, 2003
Messages
5,539
There are 3 parts for this poll
  1. Number of columns (post a schema dump)
  2. Number of records/rows
  3. Total size of table/Average record size

i'm looking mainly for tables that you've personally made or otherwise have some sort of role in. i would be happy to here any 'extraordinary' tables even if they aren't actually yours but you happen to know about

here's mine.

i actually have a tie for 2 tables for number of columns. both have 18
first is a table for an image management system i'm currently developing (it's still subject to get bigger though)
Code:
CREATE TABLE `images` (
  `iid` int(10) unsigned NOT NULL auto_increment,
  `sid` int(10) unsigned NOT NULL default '0',
  `context_id` int(10) unsigned default NULL,
  `path` varchar(255) NOT NULL default '',
  `file` varchar(255) NOT NULL default '',
  `caption` text,
  `size` int(10) unsigned NOT NULL default '0',
  `width` int(10) unsigned NOT NULL default '0',
  `height` int(10) unsigned NOT NULL default '0',
  `has_thumb` tinyint(1) unsigned NOT NULL default '0',
  `thumb_aspect` varchar(20) NOT NULL default 'keep_aspect',
  `thumb_size` int(10) unsigned NOT NULL default '0',
  `thumb_width` int(10) unsigned NOT NULL default '0',
  `thumb_height` int(10) unsigned NOT NULL default '0',
  `thumb_desired_width` int(10) unsigned NOT NULL default '0',
  `thumb_desired_height` int(10) unsigned NOT NULL default '0',
  `added_by_name` varchar(25) NOT NULL default '',
  `added_by_uid` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`iid`)
) TYPE=MyISAM;
the other holds info on faculty/staff members
Code:
CREATE TABLE `faculty` (
  `fid` int(10) unsigned NOT NULL auto_increment,
  `active` tinyint(1) unsigned NOT NULL default '1',
  `prefix` varchar(10) NOT NULL default '',
  `fname` varchar(50) NOT NULL default '',
  `mname` varchar(50) NOT NULL default '',
  `lname` varchar(50) NOT NULL default '',
  `position_short` varchar(255) NOT NULL default '',
  `position_long` tinytext NOT NULL,
  `education` text NOT NULL,
  `office` varchar(255) NOT NULL default '',
  `phone` varchar(255) NOT NULL default '',
  `fax` varchar(255) NOT NULL default '',
  `email` varchar(255) NOT NULL default '',
  `www` varchar(255) NOT NULL default '',
  `mailing` tinytext NOT NULL,
  `bio` text NOT NULL,
  `image` varchar(255) NOT NULL default '',
  `iid` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`fid`)
) TYPE=MyISAM;
both these tables are for the math/cs deptartment site that i'm in charge of at my college
http://mathcs.muhlenberg.edu

the table with the largest number of rows is a table of images (from a different project) that stores info for images from most of the episodes of star trek. there are 3,392 rows taking 392.8 kb (the images are not stored in blobs in the table)

as for the largest size table, when i made this project i was still a relative newb so i made different tables for each star trek series to hold episode information but the schema were all the same, i should have made one table, i'll display the info as if i made one table. it would be 1.75 mb, the table holds the synopses for most of the episodes of startrek. there are 606 rows so that makes about 2.95 kb per row
http://zero.servequake.com/startrek
 
44 by my count
Code:
create table `playerstats` (
	`stat_id`		int unsigned not null auto_increment,
	`player_id`		smallint unsigned,
	`year`			smallint unsigned,
	`week`			tinyint unsigned,
	`pass_att`		int DEFAULT 0, # passing
	`pass_cmp`		int DEFAULT 0,
	`pass_yd`		int DEFAULT 0,
	`pass_td`		int DEFAULT 0,
	`rush_att`		int DEFAULT 0, # rushing
	`rush_yd`		int DEFAULT 0,
	`rush_td`		int DEFAULT 0,
	`rec_att`		int DEFAULT 0, # receiving
	`rec_yd`		int DEFAULT 0,
	`rec_td`		int DEFAULT 0,
	`kret_att`		int DEFAULT 0, # kick returns (individ. players)
	`kret_yd`		int DEFAULT 0,
	`kret_td`		int DEFAULT 0,
	`pret_att`		int DEFAULT 0, # punt returns (individ. players)
	`pret_yd`		int DEFAULT 0,
	`pret_td`		int DEFAULT 0,
	`int`			int DEFAULT 0, # special cases
	`fmbl_lost`		int DEFAULT 0,
	`twopt`			int DEFAULT 0,
	`fg_0_19`		int DEFAULT 0, #field goals
	`fg_20_29`		int DEFAULT 0,
	`fg_30_39`		int DEFAULT 0,
	`fg_40_49`		int DEFAULT 0,
	`fg_50p`		int DEFAULT 0,
	`fga`			int DEFAULT 0,
	`xp`			int DEFAULT 0, # extra points
	`xpa`			int DEFAULT 0,
	`def_pt`		int DEFAULT NULL, # defense - points allowed
	`def_yd`		int DEFAULT NULL, # yards allowed
	`def_pyd`		int DEFAULT NULL, # pass yards allowed
	`def_ryd`		int DEFAULT NULL, # rush yards allowed
	`def_sack`		int DEFAULT 0, # defense special cases
	`def_fmbl_rec`	int DEFAULT 0,
	`def_int`		int DEFAULT 0,
	`def_fmbl_td`	int DEFAULT 0,
	`def_int_td`	int DEFAULT 0,
	`def_ret_td`	int DEFAULT 0, # punt/kick returns (team)
	`def_misc_td`	int DEFAULT 0, # anything else resulting in a TD
	`def_safety`	int DEFAULT 0,
	`def_blk_kick`	int DEFAULT 0, # XP / FG / Punt catch-all
	primary key (`stat_id`)
);

Size: Gimme the rest of the NFL season, ~17000 entries will pile up in this thing.
 
This is a database in development for some time. There are only a handful of tuples because of that; it really sucks having to migrate data safely when schemas change. Anyway, in the next month or two, this table will be broken up into a couple other tables, in the never-ending quest to please aerospace engineers (max_ & v_ vaues go into a multidimensional matrix). The schema, is, by far, the ugliest I've ever worked on or produced. It trumps even the jacked-up medical stuff I deal with at work (but at least I use proper relations with FKs).

Code:
CREATE TABLE `Aircraft` (
  `OID` int(10) unsigned NOT NULL auto_increment,
  `YearDeveloped` date NOT NULL default '0000-00-00',
  `CommonDesignator` varchar(20) NOT NULL default '',
  `NatoDesignator` varchar(20) NOT NULL default '',
  `Length` float default NULL,
  `Wingspan` float default NULL,
  `Height` float default NULL,
  `DryWeight` float default NULL,
  `ThrustWeightRatio` float default NULL,
  `CrewCompliment` int(11) default NULL,
  `PassengerCapacity` int(11) default NULL,
  `CrewEjection` enum('True','False') default NULL,
  `FlightControlSystem` int(10) unsigned NOT NULL default '0',
  `EngineNumber` int(11) default NULL,
  `RetractableGear` enum('True','False') default NULL,
  `LandingGearType` int(10) unsigned NOT NULL default '0',
  `MaxInternalFuel` float default NULL,
  `MidAirRefuel` enum('True','False') default NULL,
  `CombatRadius` float default NULL,
  `FerryRange` float default NULL,
  `MaxTakeOffWeight` float default NULL,
  `MaxLandingSpeed` float default NULL,
  `MaxLandingWeight` float default NULL,
  `MaxClimbRateClean` float default NULL,
  `MaxClimbRateLoaded` float default NULL,
  `MaxRollRateClean` float default NULL,
  `MaxRollRateLoaded` float default NULL,
  `MaxPitchRate` float default NULL,
  `MaxTurnRate_0` float default NULL,
  `MaxTurnRate_1` float default NULL,
  `MaxTurnRate_2` float default NULL,
  `MaxTurnRate_3` float default NULL,
  `MaxSpeed_0` float default NULL,
  `MaxSpeed_1` float default NULL,
  `MaxSpeed_2` float default NULL,
  `MaxSpeed_3` float default NULL,
  `MaxSpeed_4` float default NULL,
  `MaxSpeed_5` float default NULL,
  `MaxSpeed_6` float default NULL,
  `MaxSpeed_7` float default NULL,
  `MaxSpeed_8` float default NULL,
  `MaxSpeed_9` float default NULL,
  `V1` float default NULL,
  `Vr` float default NULL,
  `Vmu` float default NULL,
  `Vlof` float default NULL,
  `V2` float default NULL,
  `Vx` float default NULL,
  `Vy` float default NULL,
  `Va` float default NULL,
  `Vb` float default NULL,
  `Vbg` float default NULL,
  `Vbe` float default NULL,
  `Vbr` float default NULL,
  `Vc` float default NULL,
  `Vd` float default NULL,
  `Vdf` float default NULL,
  `Mdf` float default NULL,
  `Vh` float default NULL,
  `Vmo` float default NULL,
  `Mmo` float default NULL,
  `Vne` float default NULL,
  `Vno` float default NULL,
  `Vclean` float default NULL,
  `Vfe` float default NULL,
  `Vle` float default NULL,
  `Vlo` float default NULL,
  `Vref` float default NULL,
  `Vs` float default NULL,
`Vs1` float default NULL,
  `Vso` float default NULL,
  `MaxAltitude` float default NULL,
  `MaxPositiveG` float default NULL,
  `MaxNegativeG` float default NULL,
  `MaxPostitiveGLoad` float default NULL,
  `MaxNegativeGLoad` float default NULL,
  `Hardpoints` int(11) NOT NULL default '0',
  `Payload` float default NULL,
  `SpecialFeatures` text,
  `ResearcherNotes` text,
  `InformationSources` text,
  PRIMARY KEY  (`OID`),
  INDEX `FlightControlSystem` (`FlightControlSystem`),
  INDEX `LandingGearType` (`LandingGearType`),
  FOREIGN KEY (`FlightControlSystem`) REFERENCES `FlightControlSystemType` (`TID`)
	ON UPDATE CASCADE ON DELETE RESTRICT,
  FOREIGN KEY (`LandingGearType`) REFERENCES `LandingGearType` (`TID`)
	ON UPDATE CASCADE ON DELETE RESTRICT
) TYPE=INNODB;
 
well a library system we made for work has a books table with 28 columns and some schools have 15000 books. Although if i could(and when i get time) i would go back and change ALOT of stuff, this was a project that was started three years ago by three other people as a project to learn on and has since gone into production so it has some normalization issues but over all it's pretty decent.
 
I had a table with over a million records in it... It was aggregations created ahead of time from other data to speed up web based reports.
 
You should really make a new table to handle all of your thumbnail information.
 
I've got a table with 38 million rows in it right now, and have to add another 5+ million this week to it. Heh...
 
I can't post the table definition because it's closed source (not my IP), but I've got a fairly simple MySQL table with an ID (primary key), customerID (non-unique index) and a TEXT field, which holds the HTML source for customer letters. It's been going for about a month, and there are approx. 7000 rows in there, apparently storing 22.1MB of data. It's set to increase linearly over the next few months with a boom around Christmas, so I expect it to hit about100MB by the end of the year.
 
I assume no one here runs dbmail?

Fairly busy mail server storing everything in sql = multi gigabyte innodb tables.
 
Definitely not my design, but:

Code:
CREATE TABLE [dbo].[NewLoan] (
	[ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION  NOT NULL ,
	[Date] [datetime] NULL ,
	[LOID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[LOEmail] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerLName] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerMName] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerFName] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerSuffix] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[LoanData] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[MortgageType] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[MortgageText] [varchar] (80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[LoanAmt] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[Rate] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[LoanTerm] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[AmortType] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[AmortText] [varchar] (80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[ARMDesc] [varchar] (80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropAdd] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropCity] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropState] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropZip] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[NumUnit] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[LegalDesc] [varchar] (80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[YearBuilt] [varchar] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[LoanPurpose] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[LoanPurText] [varchar] (80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropertyType] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[TitleHeld] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerEmail] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerSSN] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerPhone] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerYIS] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerMStatus] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerDepen] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerAgeDepen] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerDOBDay] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerDOBMonth] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BorrowerDOBYear] [varchar] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BJointly] [bit] NULL ,
	[CBorrowerFName] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerMName] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerLName] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerSuffix] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerEmail] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerSSN] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerDOBDay] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerDOBMonth] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerDOBYear] [varchar] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerPhone] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerYIS] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerMStatus] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerDepen] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBorrowerAgeDepen] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CJointly] [bit] NULL ,
	[BAddress] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BCity] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BState] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BZip] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOwn] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BYears] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BMonths] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BCounty] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOAddress] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOCity] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOState] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOZip] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOOwn] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOYears] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOMonths] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CAddress] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CCity] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CState] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CZip] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COwn] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CYears] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CMonths] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COAddress] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COCity] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COState] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COZip] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COOwn] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COYears] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COMonths] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BEmpName] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BEmpAddress] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BEmpCity] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BEmpState] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BEmpZip] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BSelfEmp] [bit] NULL ,
	[BYOJ] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BYIP] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BTitle] [varchar] (25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BEmpPhone] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOEmpName] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOEmpAddress] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOEmpCity] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOEmpState] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOEmpZip] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOSelfEmp] [bit] NULL ,
	[BOYOJ] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOYIP] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOTitle] [varchar] (25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOEmpPhone] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CEmpName] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CEmpAddress] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CEmpCity] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CEmpState] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CEmpZip] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CSelfEmp] [bit] NULL ,
	[CYOJ] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CYIP] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CTitle] [varchar] (25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CEmpPhone] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COEmpName] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COEmpAddress] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COEmpCity] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COEmpState] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COEmpZip] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COSelfEmp] [bit] NULL ,
	[COYOJ] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COYIP] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COTitle] [varchar] (25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COEmpPhone] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PresentRent] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PresentFirstMort] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PresentOtherFin] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PresentHazard] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PresentRETax] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PresentMortIns] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PresentHOA] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PresentOther] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropRent] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropFirstMort] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropOtherFin] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropHazard] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropRETax] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropMortIns] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropHOA] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[PropOther] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BBaseInc] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOvertime] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BBonus] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BCommission] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BDividend] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BRentalInc] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BOtherInc] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBaseInc] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COvertime] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CBonus] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CCommission] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CDividend] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CRentalInc] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[COtherInc] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[OtherIncText] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[DepHeld] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[DepAmount] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[DepAddress] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[DepCity] [varchar] (35) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[DepState] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[DepZip] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[LifeInsCash] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[LifeInsAmt] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[RetireFund] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BusinessWorth] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BankAccounts] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[StocksBonds] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[RealEstate] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[Vehicles] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[Liabilities] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BDeclaration] [varchar] (26) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CDeclaration] [varchar] (26) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BPropOwn] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BHoldTitle] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CPropOwn] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CHoldTitle] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[Explanations] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BFurnish] [bit] NULL ,
	[CFurnish] [bit] NULL ,
	[BRace] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CRace] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[BSex] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[CSex] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[Downloaded] [bit] NULL ,
	[Display] [bit] NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

It's for an online 1003 (Uniform Residential Loan Application) application. Right now it has only 5 records in it, that's because I haven't implemented the new page. Our current table (7 columns) has over 4500 entries (loan applications).
 
ameoba said:

I dunno if you're talking in regards to the table I posted, but I have definitely heard of it. I've designed some very integrate databases for my company, and the above was not of my doing. Unfortunately the script is very messy and integrated too far into the huge database for me to safely and cleanly redesign the database without having to completely redo the application.
 
ameoba said:

In a perfect world... where companies/users don't suddenly decide they need all sorts of crap tacked on after design and implementation has been finished for many months, most of the talent has gone home, and they've filled the damn thing. Heck, even the multi-million dollar package I've been working with the past few years is finally getting a redesign after 4 years. It will cost the company a few million more, but this time they're doing some better normalization, and, shock & horror, adding foreign keys and relational constraints! Just imagine, several companies paid millions for a database package that wasn't normalized nor did it have relational constraints. And this is one of the better systems in the industry...
 
tim_m said:

If your image doesn't have a thumbnail, you have 6 extra columns that are blank and just taking up space, whereas a new table you could have your primary key be the iid from the first table, and if the thumbnail table has an entry given the iid, then it has a thumbnail (gets rid of the extra column "has_thumb"). And if there is no entry in the thumbnail table, you don't have 6 extra columns of no value just sitting there.

Code:
_____________________________________
|    'images'      |     'thumbs'     |
|-------------------------------------|
|*iid              |*iid              |
| sid              | aspect           |
| context          | size             |
| path             | width            |
| file             | height           |
| caption          | desired_width    |
| size             | desired_height   |
| width            |                  |
| height           |                  |
| added_by_name    |                  |
| added_by_uid     |                  |
_____________________________________
 
i just looked at one of our item tables and it had 32 coloms, and over 110,000 records,
 
Our MySQL database has 159 tables now.

Biggest Table:
Type Usage
Data 2,897 MB
Index 1,073 MB
Total 3,970 MB
Rows 92,039,018
Row length ø 33
Row size ø 45 Bytes


Most Columns (50):
PHP:
CREATE TABLE `users` (
  `id` mediumint(9) NOT NULL auto_increment,
  `fname` varchar(40) NOT NULL default '',
  `mname` char(2) default NULL,
  `lname` varchar(40) NOT NULL default '',
  `password` varchar(50) NOT NULL default '',
  `passdate` date NOT NULL default '0000-00-00',
  `clientid` mediumint(9) NOT NULL default '0',
  `phone` varchar(15) NOT NULL default '',
  `ext` varchar(6) default NULL,
  `email` varchar(30) NOT NULL default '',
  `emaildom` mediumint(9) NOT NULL default '0',
  `title` varchar(50) NOT NULL default '',
  `status` enum('active','inactive') NOT NULL default 'active',
  `date` date NOT NULL default '0000-00-00',
  `lastmod` date NOT NULL default '0000-00-00',
  `userlevel` tinyint(4) NOT NULL default '0',
  `usercat` mediumint(9) NOT NULL default '0',
  `templock` tinyint(4) NOT NULL default '0',
  `userrelationship` mediumint(9) NOT NULL default '0',
  `usertype` mediumint(9) NOT NULL default '0',
  `defaultdistributionid` mediumint(9) default NULL,
  `distributionuserid  ` mediumint(9) default NULL,
  `empid` varchar(40) NOT NULL default '',
  `protected` enum('Yes','No') NOT NULL default 'No',
  `industryid` mediumint(9) NOT NULL default '1',
  `displayscardid` enum('Yes','No') NOT NULL default 'No',
  `reportlevels` tinyint(4) NOT NULL default '1',
  `monitorinheir` enum('Yes','No') NOT NULL default 'No',
  `defaultscardview` tinyint(4) NOT NULL default '0',
  `showtargettomin` enum('Yes','No') NOT NULL default 'Yes',
  `showmintounsat` enum('Yes','No') NOT NULL default 'Yes',
  `ewperiodannual` tinyint(4) NOT NULL default '3',
  `ewperiodquarter` tinyint(4) NOT NULL default '4',
  `ewperiodmonth` tinyint(4) NOT NULL default '6',
  `ewperiod28day` tinyint(4) NOT NULL default '6',
  `ewperiodbiweek` tinyint(4) NOT NULL default '12',
  `ewperiodweek` tinyint(4) NOT NULL default '24',
  `ewperiodday` tinyint(4) NOT NULL default '30',
  `tgperiodannual` tinyint(4) NOT NULL default '3',
  `tgperiodquarter` tinyint(4) NOT NULL default '6',
  `tgperiodmonth` tinyint(4) NOT NULL default '18',
  `tgperiod28day` tinyint(4) NOT NULL default '19',
  `tgperiodbiweek` tinyint(4) NOT NULL default '27',
  `tgperiodweek` tinyint(4) NOT NULL default '53',
  `tgperiodday` tinyint(4) NOT NULL default '30',
  `showminperf` enum('Yes','No') NOT NULL default 'Yes',
  `showunsat` enum('Yes','No') NOT NULL default 'Yes',
  `requirereportminperf` enum('Yes','No') NOT NULL default 'No',
  `requirereportunsat` enum('Yes','No') NOT NULL default 'Yes',
  `trenddesc` enum('Period','Annual') NOT NULL default 'Period',
  PRIMARY KEY  (`id`),
  KEY `clientid` (`clientid`),
) TYPE=InnoDB PACK_KEYS=0 ;
 
We have an SQL server that acts as a store for decoded SNMP packets received from 5000+ remote sites. The master table has 16 columns and currently has 5 million rows .

It gets cleared every six months (currently has 2 months to go until it is cleared again)
 
Back
Top