mysql设计表应该注意的问题解决办法
- 格式:doc
- 大小:38.00 KB
- 文档页数:2
MySQL常见错误及解决方法总结近年来,MySQL已经成为了最受欢迎的开源数据库管理系统之一。
它的稳定性和可靠性使得它被广泛应用于各种类型的应用程序和网站中。
然而,正如任何其他软件一样,MySQL也存在一些常见的错误和问题。
在本文中,我们将探讨一些常见的MySQL错误以及它们的解决方法。
1. 连接问题在访问MySQL数据库时,经常会遇到无法连接到数据库的问题。
这可能是由多种原因引起的。
首先,确保您的数据库服务器正在运行,并且端口号、用户名和密码等连接信息正确无误。
如果连接信息正确,但仍然无法连接,那么可能是由于网络问题或防火墙设置等导致的。
您可以尝试通过检查网络连接或调整防火墙设置来解决此问题。
2. 数据库备份和恢复问题数据库备份和恢复是任何一个数据库管理员都必须处理的重要任务。
然而,当执行这些操作时,有时会出现各种问题。
例如,在备份过程中可能会遇到文件权限错误或磁盘空间不足等问题。
解决这些问题的方法包括:确保备份目录具有正确的权限,确保磁盘有足够的空间,并且检查备份脚本中的语法错误等。
3. 数据库性能问题数据库性能问题是每个应用程序开发人员和数据库管理员都必须关注的事项。
当数据库查询变得缓慢时,可能会导致应用程序的性能下降。
这可能是由于不正确的查询、索引问题或服务器配置不当引起的。
为解决这些问题,您可以优化查询语句、创建适当的索引和重新配置MySQL服务器的参数等。
4. 主从复制问题在分布式环境中,MySQL的主从复制是常用的数据复制方法之一。
但是,复制过程中可能会遇到各种问题。
例如:复制延迟、数据不一致或复制停止等。
要解决这些问题,您可以检查主从服务器之间的网络连接、确保二进制日志文件正确配置,并且检查复制过程中的错误日志等。
5. 错误日志和慢查询日志MySQL的错误日志和慢查询日志是调试和排查问题的重要工具。
错误日志记录了发生的错误和警告,而慢查询日志记录了执行时间超过指定阈值的查询。
然而,如果您配置不正确,有时可能无法生成这些日志。
常考内容数据库设计的常见问题与解决方案数据库设计是软件开发过程中的关键步骤之一,其合理性和稳定性直接影响着系统的运行效果和效率。
然而,在实际操作中,很多开发人员在数据库设计时都会遇到各种各样的问题。
本文将介绍常见的数据库设计问题,并提供相应的解决方案,以帮助开发人员顺利进行数据库设计。
一、数据冗余问题数据冗余是指在多张表中存在相同的数据,导致数据冗余的问题在数据库设计中非常常见。
数据冗余会造成数据的重复性,增加了存储空间的浪费,同时在数据更新时会引发数据不一致的问题。
解决方案:1. 第一范式化:将重复的数据分离到一个单独的表中,并通过外键与原始表进行关联。
2. 第二范式化:将非主键列中与主键部分相关的数据进行提取,创建新的表并与原始表进行关联。
3. 第三范式化:在满足第二范式化的基础上,将非主键列中与非主键部分相关的数据进行提取,创建新的表并与原始表进行关联。
二、主键设计问题主键是用于唯一标识表中每一行数据的字段,主键设计不合理可能导致数据查询效率低下,造成系统性能下降。
解决方案:1. 使用自增主键:使用数据库提供的自增主键机制,如MySQL的自增主键,保证每一行数据都有唯一的主键。
2. 慎选自然主键:在选择自然主键时,需要保证其唯一性和稳定性,避免出现数据冲突和频繁更新主键的情况。
三、索引设计问题索引是数据库中用于提高查询效率的重要机制,不合理的索引使用会导致性能下降、空间浪费等问题。
解决方案:1. 对频繁查询的字段创建索引:根据实际业务需求,对经常被查询的字段创建索引,提升查询效率。
2. 避免过多索引:过多的索引会导致数据插入、更新、删除等操作的性能下降,对索引的选择要慎重。
3. 选择合适的索引类型:根据需求选择适当的索引类型,如B+树索引、哈希索引等。
四、表关系设计问题表关系设计是数据库设计的重要组成部分,不合理的表关系可能导致数据查询困难、数据丢失等问题。
解决方案:1. 选择合适的关系类型:根据实际业务需求,选择适当的关系类型,如一对一关系、一对多关系等。
数据库设计中常见问题分析与解决方案在进行数据库设计的过程中,常常会遇到一些常见问题,这些问题可能会影响数据库的性能、数据完整性以及系统的稳定性。
正确识别并解决这些问题对于数据库的有效管理和运作至关重要。
本文将分析数据库设计中常见问题,并给出相应的解决方案。
1. 数据冗余问题数据库中的数据冗余是指存储了重复、重叠或冗余的数据,造成了存储空间的浪费,降低了数据库的性能。
在数据库设计中,数据冗余是不能被忽视的问题。
解决方案:- 规范化数据表结构:通过合理设计数据表的关系,避免数据冗余。
- 使用外键约束:利用外键约束确保数据的一致性,避免数据冗余。
2. 数据库性能问题数据库的性能是衡量一个数据库系统是否优秀的重要指标之一。
在数据库设计中,存在一些常见的性能问题,如慢查询、索引失效等。
解决方案:- 优化数据库查询:通过使用索引、限制返回的行数、尽量避免使用全表扫描等优化手段,提高查询效率。
- 合理使用索引:对于频繁进行查询的字段,建立适当的索引,以加快查询速度。
3. 数据一致性问题数据库中的数据一致性是指数据的完整性和准确性,包括数据约束和数据关系的约束。
解决方案:- 使用约束:通过定义合适的约束条件来保证数据的一致性,如主键约束、外键约束、唯一约束等。
- 事务管理:通过使用事务的概念,保证数据库中的所有操作要么全部成功,要么全部失败,确保数据的一致性。
4. 安全性问题数据库设计中存在的另一个重要问题是数据的安全性。
数据库中存储着众多敏感信息,未经授权的访问可能会导致数据泄露、篡改等风险。
解决方案:- 实施访问控制:通过对用户进行身份认证和权限管理,确保只有授权的用户能够访问数据库。
- 加密数据:通过对重要数据进行加密,提高数据的安全性。
5. 扩展性问题随着业务的不断发展和变化,数据库的数据量和访问量可能会不断增加。
为了保证数据库的性能和稳定性,需要考虑数据库的扩展性。
解决方案:- 使用分区表:通过将数据按某个特定条件分区,可以减少查询的数据量,提高查询速度。
Mysql建表与索引使用规范整理一,设计表规范:1. MySQL建表,字段需设置为非空,需设置字段默认值。
2. MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL。
3. MySQL建表,如果字段等价于外键,应在该字段加索引。
4. MySQL建表,不同表之间的相同属性值的字段,列类型,类型长度,是否非空,是否默认值,需保持一致,否则无法正确使用索引进行关联对比。
5. MySQL使用时,一条SQL语句只能使用一个表的一个索引。
所有的字段类型都可以索引,多列索引的属性最多15个。
6. 如果可以在多个索引中进行选择,MySQL通常使用找到最少行的索引,索引唯一值最高的索引。
7. 建立索引index(part1,part2,part3),相当于建立了index(part1),index(part1,part2)和index(part1,part2,part3)三个索引。
8. MySQL针对like语法必须如下格式才使用索引:SELECT * FROM t1 WHERE key_col LIKE ‘ab%’ ;9. SELECT COUNT(*) 语法在没有where条件的语句中执行效率没有SELECTCOUNT(col_name)快,但是在有where条件的语句中执行效率要快。
10. 在where条件中多个and的条件中,必须都是一个多列索引的key_part属性而且必须包含key_part1。
各自单一索引的话,只使用遍历最少行的那个索引。
11. 在where条件中多个or的条件中,每一个条件,都必须是一个有效索引。
12. ORDER BY 后面的条件必须是同一索引的属性,排序顺序必须一致(比如都是升序或都是降序)。
13. 所有GROUP BY列引用同一索引的属性,并且索引必须是按顺序保存其关键字的。
14.、JOIN 索引,所有匹配ON和where的字段应建立合适的索引。
15. 对智能的扫描全表使用FORCE INDEX告知MySQL,使用索引效率更高。
在数据库设计过程中遇到的问题及解决问题在数据库设计过程中,我们常常会遇到一些问题,需要找到合适的解决方法。
下面我将介绍一些我在数据库设计过程中遇到的问题及解决方法。
问题一:数据冗余在数据库设计过程中,我们经常会遇到数据冗余的问题。
数据冗余指的是在数据库中存储了重复的数据,这会浪费存储空间,并且容易导致数据不一致的问题。
解决方法:通过规范化数据库设计,可以避免数据冗余。
规范化是一种将数据库设计分解为多个关系表的过程。
通过将数据分解成更小的关系表,并通过关系来连接这些表,可以减少数据冗余的问题。
问题二:数据完整性在数据库设计中,数据完整性是一个重要的问题。
数据完整性指的是数据库中的数据必须满足一定的规则和约束,以保证数据的正确性和一致性。
解决方法:可以通过在数据库中设置约束来确保数据的完整性。
比如,可以使用主键约束来保证表中的每条记录都有唯一的标识符,使用外键约束来保证表之间的关系的一致性,使用检查约束来限制某些字段的取值范围等。
问题三:查询性能在数据库设计中,查询性能可能是一个关键问题。
如果数据库设计不合理,查询可能会变得非常缓慢,影响系统的性能。
解决方法:可以通过合理的索引设计来提高查询性能。
索引是一种数据结构,可以加速数据库中的数据检索。
通过在关键字段上创建索引,可以大大提高查询的速度。
同时,还可以通过优化查询语句,避免全表扫描等操作,进一步提高查询性能。
问题四:数据安全性在数据库设计中,数据安全性是一个非常重要的问题。
数据库中存储了大量的敏感数据,如果不加以保护,容易导致数据泄露和安全漏洞。
解决方法:可以通过在数据库中设置访问控制、加密和审计等机制来提高数据的安全性。
比如,可以设置用户权限,只允许特定的用户访问特定的数据;可以对敏感数据进行加密存储,防止数据泄露;可以记录数据库操作日志,方便后续的审计和追踪。
问题五:数据一致性在数据库设计中,数据一致性是一个不可忽视的问题。
数据一致性指的是数据库中的数据必须保持一致,即不会出现冲突或矛盾的情况。
数据库设计的常见问题与解决方法在当今信息化时代,数据库已经成为了企业和组织中不可或缺的一部分。
数据库设计的好坏直接影响着系统的性能和数据的可靠性。
然而,数据库设计中常常会遇到一些问题,本文将探讨一些常见的问题,并提供相应的解决方法。
一、数据冗余数据冗余是指在数据库中存储了多个相同或相似的数据,造成了存储空间的浪费和数据的不一致。
数据冗余不仅会增加数据库的存储压力,还会导致数据更新困难和查询效率低下。
解决方法:1. 规范化设计:通过规范化设计,将数据拆分成多个表,每个表只包含一个实体或一个关系。
这样可以消除冗余数据,提高数据的一致性和完整性。
2. 使用外键约束:在关系型数据库中,可以使用外键约束来保证数据的一致性。
通过在表之间建立关系,可以避免数据冗余和不一致的问题。
3. 数据备份和恢复:定期进行数据备份,以防止数据丢失。
同时,备份数据也可以用于恢复数据库中的冗余数据。
二、性能问题数据库性能问题是指数据库在处理大量数据时出现的延迟和响应时间过长的情况。
这会导致系统的运行效率低下,影响用户的体验。
解决方法:1. 索引优化:通过合理地创建索引,可以提高数据库的查询速度。
但是,过多的索引也会降低数据库的写入性能,因此需要权衡索引的数量和查询的频率。
2. 查询优化:通过优化查询语句,可以减少数据库的负载和响应时间。
可以使用EXPLAIN语句来分析查询语句的执行计划,找出潜在的性能问题并进行优化。
3. 分区技术:对于大型数据库,可以使用分区技术将数据分散到多个物理存储设备上,提高数据库的并发处理能力和查询性能。
三、安全性问题数据库安全性问题是指未经授权的用户访问数据库或者对数据库进行非法操作的情况。
这会导致数据泄露、数据损坏或者系统崩溃。
解决方法:1. 访问控制:通过设置用户权限和角色,限制用户对数据库的访问和操作。
只有经过授权的用户才能访问敏感数据。
2. 数据加密:对于重要的数据,可以使用数据加密技术进行保护。
MySQL数据表的性能优化与规划章节1:引言MySQL是一个流行的关系型数据库管理系统。
它可以用于存储和管理各种类型的数据。
MySQL具有良好的可扩展性和灵活性,使其成为许多网站和应用程序的首选数据库。
然而,数据表在MySQL中的性能和规划方面是关键问题。
MySQL的性能优化和规划可以帮助提高应用程序的响应时间,减少请求延迟,并促进数据库的可靠性。
在本文中,我们将探讨MySQL数据表的性能优化和规划。
章节2:表的设计规划数据表设计是数据库管理的核心任务之一。
在MySQL中,表的性能优化和规划必须始于表的设计和规划。
下面是一些表的设计规划原则:2.1.规范表的命名命名约定是表设计中的重要元素。
命名必须为英文单词或者短语,明确表达表的意图。
同时也要注意表名大小写的一致性和字符集的统一。
建议在表名中使用下划线“_”来分隔单词。
2.2.确定表的字段表的字段是建立数据库的基础。
为了使表的性能达到最佳状态,确定表中的正确的字段非常重要。
为表的每个字段选择正确的数据类型,以便最大限度地减少存储空间和提高性能。
例如,选择INT data-type而不是VARCHAR data-type来存储小数值。
2.3.优化索引索引在数据库性能方面起着非常重要的作用。
如果正确地优化索引,可以大大减少查询时间和响应时间。
MySQL支持各种类型的索引,包括B-Tree索引、哈希索引和全文索引。
2.4.规划表的大小和宽度MySQL表的大小对查询性能有很大影响。
规划表的大小和宽度是重要的优化因素。
建议在一个表中最多包含200万行。
如果您需要存储更多的数据,则应将其分解为多个表。
2.5.使用分区表分区表是MySQL提供的一个高级功能,用于把一张大表(1000万行以上)分成较小的表块,以实现更快的查询速度和更好的数据管理。
章节3:表的性能优化优化表是MySQL管理的核心任务之一。
通过优化表,可以提高查询性能,快速响应客户请求,减少数据库中的负载并有效地管理数据。
MySQL常见性能问题的排查与解决技巧MySQL是一种常用的关系型数据库管理系统,用于存储和管理大量数据。
然而,随着数据量的增加和并发访问的增加,MySQL数据库可能遇到性能问题。
本文将讨论常见的MySQL性能问题,并提供排查和解决这些问题的技巧。
一、慢查询问题慢查询是指执行时间较长的SQL语句,影响系统的响应速度。
慢查询可能由于以下原因引起:1.索引问题:缺乏合适的索引或使用了不当的索引,导致查询效率低下。
解决方法是分析查询语句并创建合适的索引,或者优化现有索引。
2.复杂查询语句:复杂的联表查询、子查询或嵌套查询可能导致慢查询。
解决方法是优化查询语句,尽量减少不必要的联表操作和子查询。
3.锁问题:当多个并发用户查询同一个表时,可能发生锁等待,导致查询变慢。
解决方法是优化锁的使用,例如使用合理的事务隔离级别,或者通过调整锁粒度减少锁冲突。
二、连接问题连接问题是指MySQL无法处理大量并发连接请求,导致系统响应变慢或无法响应。
常见的连接问题包括:1.连接数限制:MySQL默认有最大连接数限制,当连接数达到上限时,会导致新的连接被拒绝。
解决方法是增加最大连接数配置或者优化应用程序的连接管理,尽量复用连接。
2.连接超时:当连接空闲时间较长时,可能会由于超时被断开,导致应用程序重新建立连接,造成性能损失。
解决方法是调整连接超时参数,确保连接时间合理。
3.连接泄漏:应用程序在使用完数据库连接后没有及时释放,导致连接资源被浪费。
解决方法是及时释放连接,或者使用连接池管理连接。
三、内存问题内存问题是指MySQL使用的内存资源不足或使用不当,导致系统性能下降。
常见的内存问题包括:1.内存配置不当:MySQL的内存分配参数设置不合理,导致内存不足或浪费。
解决方法是根据系统的实际情况调整内存参数,例如缓冲池大小、连接内存等。
2.内存泄漏:MySQL在运行过程中可能出现内存泄漏问题,导致内存占用逐渐增加。
解决方法是定期监控内存占用情况,及时重启MySQL以释放内存。
MySQL中数据库设计的冗余和一致性问题分析数据库设计是构建高性能和可靠系统的关键。
在MySQL中,冗余和一致性是数据库设计中需要密切关注的两个重要问题。
本文将分析MySQL中数据库设计中的冗余和一致性问题,并提出相应的解决方案。
一、冗余问题的分析冗余指的是在数据库中存储相同或相似的数据。
冗余数据在数据库设计中是一个常见的问题,它既浪费了存储空间,又增加了数据的维护成本。
下面将从数据冗余的原因、影响以及解决方案三个方面进行分析。
1. 数据冗余的原因数据冗余的主要原因包括以下几个方面:a. 数据库表设计问题:在数据库表设计时,可能会存在多个表存储相同或相似的数据,导致了数据的重复存储。
b. 数据库表更新不及时:在更新数据时,没有及时更新相关的表,导致了数据的冗余。
c. 数据导入导出问题:在数据导入导出时,由于数据格式的问题或者不完整的数据清理工作,导致了冗余数据的产生。
2. 数据冗余的影响数据冗余会导致以下几个方面的影响:a. 存储空间浪费:冗余数据会占用大量的存储空间,增加了存储成本。
b. 数据维护困难:由于存在冗余数据,数据的维护和更新变得困难,容易导致数据不一致。
c. 数据一致性问题:冗余数据会导致数据一致性的问题,即同一份数据在不同的表中可能存在不同的值。
3. 数据冗余的解决方案为了解决MySQL数据库中的数据冗余问题,可以采取以下几个方面的策略:a. 正规化数据库:通过设计合理的数据库表结构,避免数据重复存储。
b. 使用外键关联表:在多个表中存在相同数据时,可以通过使用外键关联表的方式来避免数据冗余。
c. 定期清理冗余数据:定期清理数据库中的冗余数据,保持数据的干净和一致性。
二、一致性问题的分析一致性是数据库设计中的另一个重要问题,它指的是数据库中的数据应该始终保持一致的状态。
在MySQL中,一致性问题主要体现在并发访问和事务处理方面。
下面将从并发访问和事务处理两个方面进行分析。
1. 并发访问引发的一致性问题并发访问是指多个用户同时访问数据库的情况。
建表的注意事项
建表是数据库设计的重要环节,需要谨慎处理。
以下是建表时需要注意的事项:
1. 确定表的名称:表名应简洁明了,能够准确表达表中数据的含义。
2. 设计表的字段:每个字段都应该有一个明确的含义,字段的数据类型和长度也需要仔细考虑。
3. 确定主键:主键是用来唯一标识表中每一行数据的字段,需要注意主键的选择应该具有唯一性,并且不可更改。
4. 设计外键:外键用来连接不同的表,需要考虑外键是否可以为空,以及删除操作时外键的处理方式。
5. 设计索引:索引可以提高数据查询的速度,但过多的索引会降低数据插入和更新的速度,需要谨慎使用。
6. 设计约束:约束可以保证数据的完整性和一致性,包括唯一性约束、非空约束和默认值约束等。
7. 考虑数据的增删改查操作:在设计表结构时需要考虑数据的增删改查操作,以便于后续的开发和维护。
8. 考虑数据的存储和备份:在建表时需要考虑数据的存储方式和备份策略,以保证数据的安全性和可靠性。
总之,建表是数据库设计的重要环节,需要根据实际业务需求进行合理的设计,以保证数据的完整性、一致性和可靠性。
- 1 -。
关于设计表时应该注意的问题
如有错误欢迎大家指出。
这段时间在家里,做了点修正。
1、慎重选择表名。
有两种选择:
按照多数开发语言的命名规则。
比如(myCustomer)。
按照多数开源思想命名规则。
比如(my_customer)。
按照咱们中国人的思想。
比如(我的客户)。
第一种有个缺点,很容易忘掉大写的字母。
第二种则比较好,每个WORD间用下划线连接,避免遗忘。
第三种建议不要用,虽然很好记。
不觉得解析这个表的时候还需要编码转化吗?我个人理解,大家可以补充。
2. 关于编码的设定。
A. GBK/GB2312.(适用于纯中文存储)。
B. UTF8.(适用于中英文混合存储)。
C. LATIN1。
(适用于纯英文存储)。
D. 其他的。
3. 关于表引擎的选择。
A. MYISAM.(很多人说她的表级锁定会带来好多问题,其实只要设计好对应的表以及写好对应的SQL查询就没有那么大的问题。
)
B. INNODB. (如果要用到事务,选择她不会错。
至于多数人讲的MASTER/SLAVE结构上用INNODB 在MASTER的选择是否正确,就要看你怎么用了。
不能一味的疯狂使用INNODB。
除非你想要确保非常高可用性,)
C. CSV. (以前我写过文章,关于这个引擎。
个人觉得最主要的是来存储少量数据以及从EXCEL 到MYSQL的转换方面会很有用。
当然只要涉及到规则数据的导入,她就可以办到。
)
D. BLACKHOL
E. (觉得最完美的用处在于MASETR/SLAVE上面,并且MASTER是一个临时的专门负责写的机器。
不过缺点也很多,会与MYISAM或者INNODB或者其他的引擎有所冲突,这点自己要做个权衡)。
E. MEMORY. (应该说是MYISAM的兄弟了。
不过在读内存总比读磁盘的速度要快。
不过要注意,它不支持动态数据类型)。
F. FEDERATED. (典型的分布式引擎。
我以前文章中有介绍。
)
G. NDB。
(网络版存储引擎。
因为Replication 总是有延迟,所以如果系统容不得任何延迟,就用这个吧。
)
H. FOLCON。
(6.0后用来代替INNODB的引擎。
)
I. 其他旧的以及新开发的引擎具体介绍:
中国返利网 / 汇丰农牧 /
4. 关于属性数据类型的选择。
A. INT(一个字节的TINYINT,两个字节的SMALLINT,三个字节的MEDIUMINT,四个字节的INT,8个字节的BIGINT。
记住:UNSIGNED不管你定义或者不定义,都不影响内部的存储字节大小)
B. 少于10个字符用CHAR是在合适不过了。
(不过要记住在MEMORY引擎里面会自动把VARCHAR转化为CHAR)
C. 我一般用DECIMAL或者NUMERIC来代替FLOAT 或者DOUBLE。
因为老板要求精确的数字。
如果不要求精确的,那就用FLOAT吧。
速度快,占空间小。
(DECIMA、FLOAT(P)是动态存储。
比如:DECIMAL(10,2)占用5个字节。
FLOAT占4个字节,)
D. BLOB,TEXT,VARCHAR(一般存放文章内容,特别是新闻网站。
需要的字节数是所存储的字符长度+1。
记住BLOB和VARCHAR是TEXT和CHAR的BINARY类型)
E. ENUM(在一定范围内绝佳的代替VARCHAR和CHAR的工具,因为她只占一到两个字节。
)
F. 时间和日期类型(占3个字节的DATE,8个字节的DATETIME,4个字节的TIMESTAMP,3个字节的TIME,1个字节的YEAR。
)。
如果要存储比如‘1983’这样的年份,用YEAR明显比VARCHAR或者CHAR 要节省空间。
因为后者要占5个字节。
G. BOOLEAN(用来存储YES或者NO之类的值,占用一个字节。
)
H. 关于自增字段。
目前我们的项目中涉及到好多ORDER BY RAND()操作。
此类语句在数据库并发大的时候会造成CPU严重阻塞,持续产生数据库死锁!解决此类问题最好的办法就是利用自增字段,用程序随即生成数字序列,或者在数据库端随即生成数字序列。
I. 关于ZEROFILL。
非常好用的前置填补0的存储,而不是用用对应个数的空串来代替。
在需要前置补零的操作中INT ZEROFILL可以用来代替CHAR或者VARCHR。
5. 关于默认值。
A. 在5.0之后,只要设定字段为NOT NULL,系统自动给出默认值。
对应CHAR->’’,INT->0,BOOLEAN->0等等。
B. 在5.0之前的版本,需要手动指定默认值,否则会出现一定的异常。
到时候查都不好查了。
6. 关于多数据库建立。
A. 应该把对应的业务放在各自不同的数据库里,而不是所有业务放到一个库里面。
B. 数据库的命名和表命名一样。
7. 关于索引。
A. 设计表初期尽量考虑到应该建立的索引。
所有建立的索引一定要测试一下,看是否有必要,否则会翻倍的减少写数据的性能。
B. 对于只有存储0或者1的列,尽量干掉索引,单独分出两个表。
一个代替0,另外一个代替1。
或者在一个字段里面用EMUM或者CHAR(0)或者CHAR(1)来代替。
PS:最后一个要值得注意的,就是尽量所有的字段用NOT NULL。
虽然MYSQL可以对NULL列进行索引,不过我不建议。