开发常见数据库问题总结及分析
数据库存在的问题及建议

数据库存在的问题及建议一、引言数据库是现代信息系统的核心,它承载着企业的数据资产,为企业的决策和运营提供了重要支持。
然而,在实际使用过程中,我们也会发现一些问题,这些问题不仅影响了数据库的性能和稳定性,也会对企业的业务产生负面影响。
本文将从多个角度分析数据库存在的问题,并提出相应建议。
二、安全性问题1. 数据泄露数据库中存储着大量敏感信息,如客户信息、交易记录等。
如果这些信息被恶意获取或泄露,将会给企业带来极大损失。
因此,在保证数据完整性和可用性的前提下,加强数据库安全措施尤为重要。
建议:(1)加强访问控制:限制用户权限、设置密码策略等;(2)加密敏感数据:对敏感数据进行加密保护;(3)备份与恢复:定期备份数据并测试恢复流程。
2. SQL注入攻击SQL注入攻击是指攻击者通过构造恶意SQL语句来绕过应用程序的身份验证机制或获取未授权访问权限。
这种攻击方式比较常见且难以防范。
建议:(1)过滤用户输入:对用户输入进行过滤,防止恶意注入;(2)使用参数化查询:使用参数化查询语句代替字符串拼接;(3)限制数据库用户的权限:将数据库用户权限控制在最小范围内。
三、性能问题1. 数据库响应时间慢数据库响应时间慢会影响系统的性能和用户的体验。
这种问题可能由于多种原因引起,如大量数据查询、索引失效等。
建议:(1)优化SQL语句:通过优化SQL语句、合理使用索引等方式提高查询效率;(2)分区表:对大表进行分区,提高查询速度;(3)增加缓存:增加缓存可以减少数据库IO操作。
2. 数据库死锁当多个事务同时请求同一资源时,可能会出现死锁问题。
这种问题会导致事务无法继续执行,从而影响系统的性能和稳定性。
建议:(1)合理设计事务:尽量避免长时间占用资源;(2)设置超时机制:设置超时机制可以避免死锁持续时间过长。
四、可维护性问题1. 数据库设计不合理数据库设计不合理会导致数据冗余、难以维护等问题。
这种问题在系统开发初期应该尽量避免。
常考内容数据库设计的常见问题与解决方案

常考内容数据库设计的常见问题与解决方案数据库设计是软件开发过程中的关键步骤之一,其合理性和稳定性直接影响着系统的运行效果和效率。
然而,在实际操作中,很多开发人员在数据库设计时都会遇到各种各样的问题。
本文将介绍常见的数据库设计问题,并提供相应的解决方案,以帮助开发人员顺利进行数据库设计。
一、数据冗余问题数据冗余是指在多张表中存在相同的数据,导致数据冗余的问题在数据库设计中非常常见。
数据冗余会造成数据的重复性,增加了存储空间的浪费,同时在数据更新时会引发数据不一致的问题。
解决方案:1. 第一范式化:将重复的数据分离到一个单独的表中,并通过外键与原始表进行关联。
2. 第二范式化:将非主键列中与主键部分相关的数据进行提取,创建新的表并与原始表进行关联。
3. 第三范式化:在满足第二范式化的基础上,将非主键列中与非主键部分相关的数据进行提取,创建新的表并与原始表进行关联。
二、主键设计问题主键是用于唯一标识表中每一行数据的字段,主键设计不合理可能导致数据查询效率低下,造成系统性能下降。
解决方案:1. 使用自增主键:使用数据库提供的自增主键机制,如MySQL的自增主键,保证每一行数据都有唯一的主键。
2. 慎选自然主键:在选择自然主键时,需要保证其唯一性和稳定性,避免出现数据冲突和频繁更新主键的情况。
三、索引设计问题索引是数据库中用于提高查询效率的重要机制,不合理的索引使用会导致性能下降、空间浪费等问题。
解决方案:1. 对频繁查询的字段创建索引:根据实际业务需求,对经常被查询的字段创建索引,提升查询效率。
2. 避免过多索引:过多的索引会导致数据插入、更新、删除等操作的性能下降,对索引的选择要慎重。
3. 选择合适的索引类型:根据需求选择适当的索引类型,如B+树索引、哈希索引等。
四、表关系设计问题表关系设计是数据库设计的重要组成部分,不合理的表关系可能导致数据查询困难、数据丢失等问题。
解决方案:1. 选择合适的关系类型:根据实际业务需求,选择适当的关系类型,如一对一关系、一对多关系等。
数据库常见问题处理

数据库常见问题处理一、数据库连接问题1. 连接超时:当数据库连接超过设定的时间限制时,会出现连接超时的问题。
可以通过增加连接超时时间或优化数据库连接池来解决。
2. 连接池满:当数据库连接池已满时,新的连接请求无法得到响应。
可以通过增加连接池的最大连接数或释放闲置连接来解决。
二、数据查询问题1. 查询速度慢:当数据库中的数据量过大或查询语句复杂时,查询速度会变慢。
可以通过创建索引、优化查询语句或增加硬件资源来提升查询速度。
2. 查询结果不准确:当查询结果与预期不符时,可能是由于查询条件不准确或数据不一致导致的。
可以检查查询条件是否正确,并进行数据校验和修复。
三、数据更新问题1. 更新失败:当更新操作无法生效或报错时,可能是由于数据冲突、权限不足或数据完整性约束导致的。
可以检查更新语句和数据完整性约束,并确保有足够的权限进行更新操作。
2. 更新数据丢失:当更新操作导致部分数据丢失时,可能是由于未加事务或事务隔离级别不正确导致的。
可以使用事务来保证更新操作的原子性,并设置适当的事务隔离级别。
四、数据备份与恢复问题1. 数据备份失败:当数据备份操作失败时,可能是由于备份设备故障、备份策略不正确或备份操作被中断导致的。
可以检查备份设备是否正常、调整备份策略或重新执行备份操作。
2. 数据恢复困难:当数据损坏或丢失时,需要进行数据恢复操作。
可以使用数据库的备份和恢复工具,按照备份的时间点进行数据恢复。
五、性能优化问题1. 资源占用过高:当数据库占用过多的CPU、内存或磁盘资源时,会导致系统性能下降。
可以通过优化查询语句、增加硬件资源或调整数据库参数来降低资源占用。
2. 并发性能问题:当多个用户同时访问数据库时,可能会出现性能瓶颈。
可以通过增加并发连接数、优化事务处理或使用缓存来提高并发性能。
六、安全性问题1. 数据泄露风险:当数据库中的敏感数据受到未授权访问或恶意攻击时,会导致数据泄露。
可以通过加强数据库访问控制、使用加密技术或定期审计数据库安全来减少数据泄露风险。
数据库设计中常见问题分析与解决方案

数据库设计中常见问题分析与解决方案在进行数据库设计的过程中,常常会遇到一些常见问题,这些问题可能会影响数据库的性能、数据完整性以及系统的稳定性。
正确识别并解决这些问题对于数据库的有效管理和运作至关重要。
本文将分析数据库设计中常见问题,并给出相应的解决方案。
1. 数据冗余问题数据库中的数据冗余是指存储了重复、重叠或冗余的数据,造成了存储空间的浪费,降低了数据库的性能。
在数据库设计中,数据冗余是不能被忽视的问题。
解决方案:- 规范化数据表结构:通过合理设计数据表的关系,避免数据冗余。
- 使用外键约束:利用外键约束确保数据的一致性,避免数据冗余。
2. 数据库性能问题数据库的性能是衡量一个数据库系统是否优秀的重要指标之一。
在数据库设计中,存在一些常见的性能问题,如慢查询、索引失效等。
解决方案:- 优化数据库查询:通过使用索引、限制返回的行数、尽量避免使用全表扫描等优化手段,提高查询效率。
- 合理使用索引:对于频繁进行查询的字段,建立适当的索引,以加快查询速度。
3. 数据一致性问题数据库中的数据一致性是指数据的完整性和准确性,包括数据约束和数据关系的约束。
解决方案:- 使用约束:通过定义合适的约束条件来保证数据的一致性,如主键约束、外键约束、唯一约束等。
- 事务管理:通过使用事务的概念,保证数据库中的所有操作要么全部成功,要么全部失败,确保数据的一致性。
4. 安全性问题数据库设计中存在的另一个重要问题是数据的安全性。
数据库中存储着众多敏感信息,未经授权的访问可能会导致数据泄露、篡改等风险。
解决方案:- 实施访问控制:通过对用户进行身份认证和权限管理,确保只有授权的用户能够访问数据库。
- 加密数据:通过对重要数据进行加密,提高数据的安全性。
5. 扩展性问题随着业务的不断发展和变化,数据库的数据量和访问量可能会不断增加。
为了保证数据库的性能和稳定性,需要考虑数据库的扩展性。
解决方案:- 使用分区表:通过将数据按某个特定条件分区,可以减少查询的数据量,提高查询速度。
在数据库设计过程中遇到的问题及解决问题

在数据库设计过程中遇到的问题及解决问题在数据库设计过程中,我们常常会遇到一些问题,需要找到合适的解决方法。
下面我将介绍一些我在数据库设计过程中遇到的问题及解决方法。
问题一:数据冗余在数据库设计过程中,我们经常会遇到数据冗余的问题。
数据冗余指的是在数据库中存储了重复的数据,这会浪费存储空间,并且容易导致数据不一致的问题。
解决方法:通过规范化数据库设计,可以避免数据冗余。
规范化是一种将数据库设计分解为多个关系表的过程。
通过将数据分解成更小的关系表,并通过关系来连接这些表,可以减少数据冗余的问题。
问题二:数据完整性在数据库设计中,数据完整性是一个重要的问题。
数据完整性指的是数据库中的数据必须满足一定的规则和约束,以保证数据的正确性和一致性。
解决方法:可以通过在数据库中设置约束来确保数据的完整性。
比如,可以使用主键约束来保证表中的每条记录都有唯一的标识符,使用外键约束来保证表之间的关系的一致性,使用检查约束来限制某些字段的取值范围等。
问题三:查询性能在数据库设计中,查询性能可能是一个关键问题。
如果数据库设计不合理,查询可能会变得非常缓慢,影响系统的性能。
解决方法:可以通过合理的索引设计来提高查询性能。
索引是一种数据结构,可以加速数据库中的数据检索。
通过在关键字段上创建索引,可以大大提高查询的速度。
同时,还可以通过优化查询语句,避免全表扫描等操作,进一步提高查询性能。
问题四:数据安全性在数据库设计中,数据安全性是一个非常重要的问题。
数据库中存储了大量的敏感数据,如果不加以保护,容易导致数据泄露和安全漏洞。
解决方法:可以通过在数据库中设置访问控制、加密和审计等机制来提高数据的安全性。
比如,可以设置用户权限,只允许特定的用户访问特定的数据;可以对敏感数据进行加密存储,防止数据泄露;可以记录数据库操作日志,方便后续的审计和追踪。
问题五:数据一致性在数据库设计中,数据一致性是一个不可忽视的问题。
数据一致性指的是数据库中的数据必须保持一致,即不会出现冲突或矛盾的情况。
数据库优化的常见问题与解决方案分析

数据库优化的常见问题与解决方案分析随着数据量不断增大和业务复杂度的提升,数据库优化变得越来越重要。
数据库优化可以提高系统的性能和响应速度,减少系统负荷,更好地支撑业务。
然而,在进行数据库优化时,常常会遇到一些常见的问题。
本文将分析这些问题,并提供相应的解决方案。
一、性能瓶颈问题与解决方案1. 缺乏索引:当数据库中需要频繁进行查询操作时,缺乏合适的索引会导致查询变慢。
解决方案是根据查询需求创建适当的索引。
然而,过多的索引也会影响数据库的性能,因此需要综合考虑索引数量和字段的选择。
2. 查询语句慢:查询语句的慢可以是由于数据量过大、查询条件复杂或者索引失效等原因导致的。
解决方案可以从优化查询语句的编写,优化索引或者进行分库分表等方面入手,以提高查询速度。
3. 锁问题:在高并发的场景下,锁问题是一个常见的性能瓶颈。
解决方案可以是合理设置锁级别和事务隔离级别,减小锁的粒度,或者通过优化数据访问逻辑避免不必要的锁竞争。
另外,可以使用缓存技术来降低数据库负载。
二、存储问题与解决方案1. 数据库空间不足:数据库空间不足会导致插入操作失败,需要及时扩容数据库。
解决方案可以是增加物理空间,或者删除无用数据,进行数据清理,提升数据库的空间利用率。
2. 数据存储效率低:当存储数据的格式不够紧凑时,会浪费存储空间,同时也会影响查询速度。
解决方案可以是对数据进行规范化处理,减少冗余字段,或者使用压缩算法对存储的数据进行压缩,提升存储效率。
三、并发与负载问题与解决方案1. 并发问题:数据库在高并发的情况下容易出现性能下降和响应慢的问题。
解决方案可以是通过增加数据库连接池的大小,提高数据库并发处理能力;或者使用数据库读写分离,将读操作和写操作分摊到不同的数据库服务器上。
2. 负载问题:当数据库的负载过高时,会影响系统的响应速度和稳定性。
解决方案可以是通过优化SQL语句、调整查询策略,降低数据库查询负荷;或者进行水平拆分,将数据库分散到多个物理服务器上,提高系统吞吐量。
数据库操作中的常见问题与解决方法

数据库操作中的常见问题与解决方法随着互联网和大数据时代的到来,数据库的应用越来越广泛。
然而,用户在进行数据库操作时,常常会遇到一些问题,例如数据丢失、查询速度慢等等。
下面将介绍数据库操作中常见的问题,并提供解决方法。
1. 数据库连接问题在使用数据库之前,首先需要建立数据库连接。
一些常见的连接问题包括无法连接到数据库、连接池满了或者连接超时等。
解决方法如下:- 检查数据库服务器是否处于运行状态,确保数据库服务器已经启动;- 检查数据库服务器的网络配置,确保网络连接正常;- 检查连接池配置,增加连接池容量或调整超时时间;- 检查数据库驱动版本是否匹配,如果不匹配,则更新数据库驱动。
2. 数据库备份与恢复问题数据库备份是数据安全的关键步骤之一,而数据恢复是避免数据丢失的有效手段。
然而,备份与恢复时可能会遇到以下问题:- 备份文件的存储空间不足。
解决方法是定期清理旧的备份文件或增加存储空间;- 恢复失败。
解决方法是检查备份文件是否完整,或者使用备份软件提供的日志文件进行恢复。
3. 数据库性能问题数据库性能是保持系统高效运行和快速响应用户请求的关键。
常见的性能问题包括查询速度慢、数据量过大等。
解决方法如下:- 索引优化。
使用合适的索引可以提高查询速度,但过多的索引会增加写操作的开销。
定期检查并调整索引是保持数据库性能的重要措施之一;- 查询优化。
避免不必要的查询,使用合适的查询条件和限制返回的结果集大小;- 数据库分片。
如果数据量过大,可以考虑进行数据库分片以分担负载。
4. 数据库安全问题数据安全是数据库操作中一个重要的方面。
常见的安全问题包括数据泄露、非授权操作等。
解决方法如下:- 加密敏感数据。
针对敏感信息,可以使用加密算法对数据进行加密,以保护数据的安全性;- 数据库访问控制。
设置合适的用户权限和角色管理,限制非授权用户的访问权限;- 定期审计。
定期检查数据库日志,及时发现并处理潜在的安全问题。
5. 数据库事务问题事务是保持数据库的一致性和完整性的重要机制。
数据库设计的常见问题与解决方法

数据库设计的常见问题与解决方法在当今信息化时代,数据库已经成为了企业和组织中不可或缺的一部分。
数据库设计的好坏直接影响着系统的性能和数据的可靠性。
然而,数据库设计中常常会遇到一些问题,本文将探讨一些常见的问题,并提供相应的解决方法。
一、数据冗余数据冗余是指在数据库中存储了多个相同或相似的数据,造成了存储空间的浪费和数据的不一致。
数据冗余不仅会增加数据库的存储压力,还会导致数据更新困难和查询效率低下。
解决方法:1. 规范化设计:通过规范化设计,将数据拆分成多个表,每个表只包含一个实体或一个关系。
这样可以消除冗余数据,提高数据的一致性和完整性。
2. 使用外键约束:在关系型数据库中,可以使用外键约束来保证数据的一致性。
通过在表之间建立关系,可以避免数据冗余和不一致的问题。
3. 数据备份和恢复:定期进行数据备份,以防止数据丢失。
同时,备份数据也可以用于恢复数据库中的冗余数据。
二、性能问题数据库性能问题是指数据库在处理大量数据时出现的延迟和响应时间过长的情况。
这会导致系统的运行效率低下,影响用户的体验。
解决方法:1. 索引优化:通过合理地创建索引,可以提高数据库的查询速度。
但是,过多的索引也会降低数据库的写入性能,因此需要权衡索引的数量和查询的频率。
2. 查询优化:通过优化查询语句,可以减少数据库的负载和响应时间。
可以使用EXPLAIN语句来分析查询语句的执行计划,找出潜在的性能问题并进行优化。
3. 分区技术:对于大型数据库,可以使用分区技术将数据分散到多个物理存储设备上,提高数据库的并发处理能力和查询性能。
三、安全性问题数据库安全性问题是指未经授权的用户访问数据库或者对数据库进行非法操作的情况。
这会导致数据泄露、数据损坏或者系统崩溃。
解决方法:1. 访问控制:通过设置用户权限和角色,限制用户对数据库的访问和操作。
只有经过授权的用户才能访问敏感数据。
2. 数据加密:对于重要的数据,可以使用数据加密技术进行保护。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
引用sequence的程序未考虑值域导致的溢出问题
程序最终崩溃—短线程序之重复下发短信
一切从表结构开始
常见数据库问题总结– 读不堵塞写,写不堵塞读的理解问题
• • • • • • • • • • • INSERT INTO MMS_Send_HIS_Info (seq, spsid, …. FailReason) SELECT MMS_Send_HIS_Info_seq.nextval, spsid, …. failreason FROM MMS_UserSend_Info WHERE Sendcount >=5 OR ( sysdate - LastDealTime > 10/(24*6*5) AND Status=1 ) OR status =-100 ; DELETE MMS_UserSend_Info WHERE Sendcount >=5 OR ( sysdate - LastDealTime > 10/(24*6*5) AND Status=1 ) OR status =-100 ;
一切从表结构开始
常见问题分析—索引使用问题
如何知道索引失效
执行计划是检查索引是否使用的唯一标准--v$sql_plan(OPTION=‘FULL’) 索引监控—定位当前索引的使用情况
索引使用---参见培训文档“索引.ppt”
一切从表结构开始
常见问题分析—rownum使用问题
详见培训文档”从Rowid&Rownum开始.ppt” 一个例子,请大家思考一下结果如何
序列的设置考虑
如非必要请勿使用order,请一定要设置cache
在rac环境下 nocache+order的组合将是数据库杀手
一切从表结构开始
Oracle书籍推荐
Effective Oracle By Design—Oracle高效设计 Expert Oracle Database Architecture--Oracle 9i&10g编程艺术:深入数据
解决:书写格式化一致(确定全部采用大写或者小写,相同的缩进,空格统一,统一的换行标准 等)
实现绑定变量
不绑定变量会有什么问题 性能问题 硬解析(代码演示) 索引失效(代码演示) 安全问题(代码演示)
容易sql注入---早期139邮箱未绑定变量被注入案例(admin所有密码被修改,photoshow站点被 攻击)
一切从表结构开始
常见问题深入分析—sequence使用问题
如无必要,请直接调用序列 一个表一个字段请使用一个序列切勿混用 一个序列请仅用于一个表的一个字段 引用序列或者序列设置请结合实际
程序中引用时请注意避免溢出问题 (数据类型定义跟序列定义匹配,无法匹配则要考虑序列对应表字段 是否唯一且永久性保存)
检查sql执行计划干扰
一切从表结构开始
常见问题分析—绑定变量问题
如何实现绑定变量 程序采用预编译 动态sql语句采用占位符(数据类型严格一致)
如何知道是否实现了绑定变量
检查共享池(v$sqlarea)中sql语句
一切从表结构开始
常见问题分析—索引使用问题
常见索引失效情况
类型隐式转换 索引列上使用函数 索引列参与运算 查询条件未包括索引前导列(可能失效亦可能skip index range scan) Where子句中的IS NULL和IS NOT NULL 以%打头的LIKE查询
查询条件未包括索引前导列 根据业务等价性改写sql语句至使用上索引前导列 Where子句中的IS NULL和IS NOT NULL
此种情况需要从源头规避,即从表设计即对于会成为查询条件 或者参与运算的列保证为not null类型,从而规避这种查询需求。
查询同一张表中同一个字段的最大最小值使用一条sql语句实现 分成两条sql语句实现
查询同一张表中同一个字段的最大最小值使用一条sql语句实现
一切从表结构开始
常见问题分析—索引使用问题
如何避免索引失效
类型隐式转换的规避 总原则:一切从表结构开始
程序定义变量数据类型与表一致 存储过程,函数等参数,变量定义跟表一致(采用取表字段数据类
型的方式可以有效的规避数据类型不一致及将来表数据类型修改时避 免存储过程不匹配)
SQL> create table userinfo(userid number,username varchar2(50),salary int); • • • • • • • • • • •
•
SQL> insert into userinfo(userid,username,salary) select rownum as userid,'张'||rownum as username,1000+rownum as salary from dba_objects where rownum<=100; SQL> insert into userinfo(userid,username,salary) select rownum+100 as userid,'李'||rownum as username,1500+rownum as salary from dba_objects where rownum<=100; SQL> insert into userinfo(userid,username,salary) select rownum+200 as userid,'李'||rownum as username,1300+rownum as salary from dba_objects where rownum<=100; SQL> commit; (1) 创建索引前写出结果集
索引列使用函数导致索引失效 查询条件上无索引导致索引失效—严重的设计问 题 组合索引前导列未在查询条件中导致索引失效或 者skip index range scan导致性能低下
一切从表结构开始
常见数据库问题总结--rownum使用问题
Rownum使用跟排序同一层
select * from tab where rownum<=10 order by xx desc (这个查询的结果谁能够描述一下?)
select * from userinfo where rownum<=10 order by salary desc; select * from (select * from userinfo order by salary desc) where rownum<=10;
请按照条件分别写出上面的查询语句的结果集
一切从表结构开始
常见问题分析—绑定变量问题
绑定变量
oracle判断一条sql语句是否相同仅以sql文本是否相同来判断,故文本不一致的sql语句,即需要进行解释生成不 同的执行计划。故会造成文本差异的情况即会导致硬解析。会导致文本不一致的情况如大小写,缩进,未绑定变量 等,其中又以未绑定变量的影响最大,且其影响是跟业务量成正比的,如果一个业务系统完全没绑定变量但又没有 造成严重问题其实也是种悲剧(设置cursor_sharing =similar的情况例外,但此种设置极易导致bug从而引发重大问 题) 。
表设计相同意义的字段在不同表中数据类型统一
查询列上使用函数的规避
根据业务等价性改写语句尽量不需要使用函数 对于无法避免一定要使用函数的咨询DBA是否可以创建函数索引
一切从表结构开始
常见问题分析—索引使用问题
如何避免索引失效
索引列参与运算
根据业务等价性改写语句将运算转至条件(变量)
select * from mail_notify_info where modifytime+ 1 / 24 > sysdate =》 select * from mail_notify_info where modifytime> sysdate -1/24 注:即使modifytime列上没有索引也应该这样改写,为什么?
SQL> create index ix_userinfo$salary on userinfo(salary);
• • • •
(2)创建索引后写出结果集 SQL> alter table userinfo modify salary not null; (3) 修改salary字段约束后写出结果集 ----如果能够毫无疑问的写出正确的结果集则说明对rownum及索引的存储理解超过了大部份人
库体系结构
Troubleshooting Oracle Performance—Oracle性能诊断艺术
一切从表结构开始
Q&A 谢谢
一切从表结构开始
一切从表结构开始
常见数据库问题总结--绑定变量问题
程序未采用预编译语句导致未绑定变量
动态sql语句未实现绑定变量
一切从表结构开始
常见数据库问题总结--索引的使用问题
类型隐式转换导致索引失效
*程序中变量(参数)类型跟表中定义不一致导致隐式转换 *存储过程或者sql语句中参数,变量定义跟表不一致导致隐式转换 *同一意义的字段在各表中类型不一致但需要进行连接操作产生隐式 转换—设计问题(areacode字段在个邮不同表中的数据类型)
开发常见数据库问题 总结及分析
一切从表结构开始
大纲
• 开发常见数据库问题总结 • 常见问题分析 • 书籍介绍
数据库开发原则:一切从表结构开始
一切从表结构开始
开发常见数据库问题总结
绑定变量问题 索引使用问题 Rownum使用问题 Sequence使用问题 Oralce基本原理的理解问题