MySQL数据库优化的8种方法
索引对于查询的主要应用尤其重要,大多数时间性能问题很简单,因为我们忘记添加索引,或者不添加更有效的索引。如果不索引,那么查找任何特定的数据都会执行一个完整的表扫描。如果表中的大量数据和少量合格的结果,则没有索引将导致致命的性能退化。例如,可能只有两个性别值。建立索引不仅是一个优点,而且影响更新速度。这叫做过度索引。
2、综合指数
例如,有一种说法是这样的:从users面积= 'beijing'and年龄= 22;
如果我们要创建一个单一的指标分别在地区和年龄,因为每个MySQL查询只能使用一个索引,所以虽然这不是相对指标全表扫描的效率提高了很多,但如果在地区、年龄两对综合指数的上市将带来更高的效率。如果我们创建一个综合指数(地区、年龄、工资),这相当于创造了三个指标,即地区、年龄、工资、(地区、年龄)和地区,被称为最左前缀属性。所以当我们创建一个复合指标,我们应该把最常用的约束在左,依次下降。
3,索引不包含具有空值的列。
只要列包含空值,它们将不包含在索引中。如果一列包含null值,则此列对这个复合索引无效。因此,在设计数据库时,我们不允许字段的默认值为空。
4。使用短索引
索引字符串,如果您可以指定前缀长度。例如,如果有一个char(255)列,如果该数字在前10个或20个字符中是唯一的,则整个列没有索引。短索引不仅可以提高查询速度,而且可以节省磁盘空间和I/O操作。
5、排序的指标问题。
MySQL查询只使用一个索引,因此如果索引在WHERE子句中已经被使用,那么顺序中的列没有索引。因此,数据库默认排序在满足需求时不能使用排序操作,并且尽量不包含多列排序。如果需要,最好为这些列创建复合索引。
6,类似语句操作
一般情况下,不鼓励操作,如果不使用,则如何使用它也是一个问题。
7。不要在柱上操作。
从users年(adddate)<2007;
该操作将在每一行执行,这将导致索引失败并进行完整的表扫描,因此我们可以将其更改为索引。
从users adddate <2007-01-01;
8,不要使用不在和>操作。
不在,<>不用于指数全表scan.not在可由不存在,和身份<> 3可以标识> 3或ID<3更换。