数据库优化原则
Jun 07, 2016 pm 04:12 PM最近数据库课程设计,我总结了一下数据库的优化方法,希望对有需要的人能有帮助: 1.对查询进行优化,尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索
最近数据库课程设计,我总结了一下数据库的优化方法,希望对有需要的人能有帮助:1.对查询进行优化,尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from p where num is null
select id from p where num=0
3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from p where num=8 or num=12
select id from p where num=8 union all select id from p where num=12
select id from p where num in(1,2,3)
select id from p where num between 1 and 3
select id from p where name like '%abcd%'
7.如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:
select id from p where num=@number
select id from p with(index(索引名)) where num= @number
select id from t where num/2=10
select id from t where num=10*2
select id from t where substring(name,1,3)='abc'--name以abc开头的id
select id from t where datediff(day,createdate,'2014-12-30')=0--‘2014-12-30’生成的id
10.主键是必要的,SQL SERVER的主键同时是一个唯一索引,而且在实际应用中,我们往往选择最小的键组合作为主键,所以主键往往适合作为表的聚集索引。在有多个键的表,主键的选择也比较重要,一般选择总的长度小的键,小的键的比较速度快,同时小的键可以使主键的B树结构的层次更少。主键的选择还要注意组合主键的字段次序,对于组合主键来说,不同的字段次序的主键的性能差别可能会很大,一般应该选择重复率低【本文来自鸿网互联 (http://www.68idc.cn)】、单独或者组合查询可能性大的字段放在前面。
11.数据类型尽量用数字型,数字型的比较比字符型的快很多。
12.数据类型尽量小,这里的尽量小是指在满足可以预见的未来需求的前提下的。
13.尽量不要允许NULL,除非必要,可以用默认值代替。
14.少用TEXT和IMAGE,二进制字段的读写是比较慢的,而且,读取的方法也不多,大部分情况下最好不用。
15.自增字段要慎用,不利于数据迁移。
16.适用文件组可以有效把I/O操作分散到不同的物理硬盘,提高并发能力。
17.一个表不要加太多索引,因为索引影响插入和更新的速度。
18.适当的使用冗余的反范式设计,以空间换时间有的时候会很高效。
19.联表查询的时候,记得把小结果集放在前面,遵循小结果集驱动大结果集的原则。
20.查询尽可能使用limit减少返回的行数,减少数据传输时间和带宽浪费。

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Honor Magic V3 lance la technologie de protection oculaire anti-focalisation AI : atténue efficacement le développement de la myopie

Optimisation des programmes C++ : techniques de réduction de la complexité temporelle

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP

Nouveau processus d'empilage ! Xiaomi MIX Fold 4 est équipé pour la première fois d'une batterie Jinshajiang « de forme spéciale tridimensionnelle »

L'Apple iPad Pro/Air 2024 ne prend pas en charge l'Apple Pencil de deuxième génération : de nouveaux modèles peuvent être achetés si nécessaire

Le téléphone mobile Honor X60i est en vente à partir de 1 399 yuans : écran direct OLED quadrilatéral visuel

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées

Le téléphone de Vivo avec le signal le plus fort ! vivo X100s est équipé d'un système universel d'amplification du signal : 21 antennes, conception surround 360°
