MySql - WAMP - 巨大的表非常慢(2000万行)

Kev*_*vin 8 mysql wamp phpmyadmin

所以我贴了这个!昨天得到了一个完美的答案,需要先运行此代码:ALTER TABLE mytable AUTO_INCREMENT = 10000001;

我运行了好几次,但是在几个小时不工作后重新启动了WAMP.过夜(12小时)后,代码仍未运行.

我想知道我的数据库表大小是否超过了mysql或我的计算机或两者的限制.

但是,我有一种偷偷摸摸的怀疑,正确的索引或其他因素可能会对我的表现产生很大的影响.我知道2000万行是很多行,但它太多了吗?

我对索引知之甚少,除了它们很重要.我试图将它们添加到名称和州字段中,我相信我成功了.

顺便说一下,我正在尝试添加一个唯一的ID字段,这就是我昨天的帖子.

所以,问题是:MySql范围之外的2000万行?如果没有,我是否缺少一个索引或其他一些有助于更好地使用这2000万行的设置?我可以在所有列上放置索引并使其超快吗?

一如既往,提前谢谢......

以下是规格:

我的电脑是XP,运行WAMPSERVER,Win32 NTFS,Intel Duo Core,T9300 @ 2.50GHz,1.17 GHz,1.98 GB或RAM

DB:1表,2000万行表的大小是:数据4.4 Gigs,Indexes 1.3 Gigs,Total 5.8 Gigs

索引在"BUSINESS NAME"和"STATE"字段中设置

表字段是这样的:

`BUSINESS NAME` TEXT NOT NULL, 
`ADDRESS` TEXT NOT NULL, 
`CITY` TEXT NOT NULL, 
`STATE` TEXT NOT NULL, 
`ZIP CODE` TEXT NOT NULL, 
`COUNTY` TEXT NOT NULL, 
`WEB ADDRESS` TEXT NOT NULL, 
`PHONE NUMBER` TEXT NOT NULL, 
`FAX NUMBER` TEXT NOT NULL, 
`CONTACT NAME` TEXT NOT NULL, 
`TITLE` TEXT NOT NULL, 
`GENDER` TEXT NOT NULL, 
`EMPLOYEE` TEXT NOT NULL, 
`SALES` TEXT NOT NULL, 
`MAJOR DIVISION DESCRIPTION` TEXT NOT NULL, 
`SIC 2 CODE DESCRIPTION` TEXT NOT NULL, 
`SIC 4 CODE` TEXT NOT NULL, 
`SIC 4 CODE DESCRIPTION` TEXT NOT NULL 
Run Code Online (Sandbox Code Playgroud)

Bil*_*win 8

一些答案:

  • 2000万行完全在MySQL的能力范围内.我在一个表中工作的数据库超过5亿行.重组表可能需要数小时,但普通查询只要它们由索引辅助就不是问题.

  • 您的笔记本电脑已经过时,并且不能用作高级数据库服务器.进行表重组需要很长时间.较少的内存和通常较慢的笔记本电脑磁盘可能会限制您.您可能也使用MySQL的默认设置,这些设置适用于非常旧的计算机.

  • 我不建议TEXT列使用数据类型.TEXT大多数这些专栏都没有理由需要.

  • 不要在每个列上创建索引,尤其是在您坚持使用TEXT数据类型的情况下.TEXT除非定义前缀索引,否则甚至无法索引列.通常,选择索引以支持特定查询.

基于上述内容,您可能还有许多其他问题,但在单个StackOverflow帖子中有太多内容无法涵盖.如果您要使用数据库,您可能需要接受培训或阅读书籍.
我推荐高性能MySQL,第2版.


重新提出你的后续问题:

对于MySQL调优,这里是一个很好的起点:http: //www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/

许多ALTER TABLE操作导致表重组,这意味着基本上锁定表,使用所应用的更改制作整个表的副本,然后重命名新旧表并删除旧表.如果表非常大,这可能需要很长时间.

TEXT数据类型最多可以存储64KB,这对于电话号码或状态来说是过度的.我会使用CHAR(10)作为典型的美国电话号码.我会将CHAR(2)用于美国州.通常,使用最紧凑和节俭的数据类型,它支持给定列中所需的数据范围.