数据库 两个简单实用的表级优化方法

analyze table 表名;    //分析和存储表的关键字分布

check table 表名;  //检查一个或多个表是否有错误

optimize table 表名;  //如果含有可变长度行的表如果进行了很多更改,则会出现比较多碎片。

索引不能使用的原因:

(1)以%开头的LIKE查询不能够利用B-Tree索引  : select * from actor where last_name like ‘%NI%‘ 应(select * from (select actor_id from actor where last_name like ‘%NI%‘)a, actor b where a.actor_id=b.actor_id)

(2)数据类型出现隐式转换  :select from actor where last_name = 1 应(‘1‘)

(3)复合索引情况下,假如查询条件不包含索引列最左边部分,即不满足最左原则

(4)如果Mysql估计使用索引比全表扫描慢,则不适用索引。

(5)用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。

时间: 2024-08-04 10:11:31

数据库 两个简单实用的表级优化方法的相关文章

20亿与20亿表关联优化方法(超级大表与超级大表join优化方法)

记得5年前遇到一个SQL.就是一个简单的两表关联.SQL跑了几乎相同一天一夜,这两个表都非常巨大.每一个表都有几十个G.数据量每一个表有20多亿,表的字段也特别多. 相信大家也知道SQL慢在哪里了,单个进程的PGA 是绝对放不下几十个G的数据,这就会导致消耗大量temp tablespace,SQL慢就是慢在temp来回来回来回...的读写数据. 遇到这样的超级大表与超级大表怎么优化呢?这篇文章将告诉你答案. 首先创建2个測试表 t1,t2 数据来自dba_objects create tabl

mysql优化三 (两个简单实用的优化方法)

一.定期检查表和分析表 分析表的语法如下: ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... 本语句用于分析和存储表的关键字分布,分析的结果将可以使得系统得到准确的统计信 息,使得 SQL 能够生成正确的执行计划.如果用户感觉实际执行计划并不是预期的执行计 划,执行一次分析表可能会解决问题.在分析期间,使用一个读取锁定对表进行锁定.这对 于 MyISAM, BDB 和 InnoDB 表有作用.对于 MyISA

jquery.validate.js【简单实用的表单验证框架】

在线演示1 本地下载 原文链接:http://www.gbtags.com/gb/share/5749.htm 最近在做用户登录.注册.以及用户中心...然后之前在慕课网学的jquery.validate用得着地方了,根据自己需求进行了细节修改,重要是样式方面吧. 第一次发表这些,说得不好不要介意,开始吧.首先: $("#form").validate({ //在这里面编辑 }); 验证的时候常常需要调试,该框架内置了一个方法,如下: debug:true, //调试模式(并不会提交)

jquery.validate.js【简单实用的表单验证框架】【进阶版】

这个是这个插件的官网和我找到的一个中文博客.(虽然插件的名字叫做jquery.validte.js,但其实,这个插件的名字叫jquery validation). 基础的用法可以去看冷子欲的文章或者上面的博客,我这里就不详细介绍了. 首先最重要的一点,所有要验证的域都要在form里,同时这些域都要有name属性. 详细内容请见原文链接:http://www.gbtags.com/gb/share/5765.htm 1. 默认validate参数的初始化: 这个插件如果要用,肯定很多页面都会用到,

介绍jquery.validate.js简单实用的表单验证框架

在线演示1 本地下载 最近在做用户登录.注册.以及用户中心...然后之前在慕课网学的jquery.validate用得着地方了,根据自己需求进行了细节修改,重要是样式方面吧. 第一次发表这些,说得不好不要介意,开始吧.首先: $("#form").validate({ //在这里面编辑 }); 验证的时候常常需要调试,该框架内置了一个方法,如下: debug:true, //调试模式(并不会提交) 来个实例,HTML: <div class="form-group&qu

orcale数据库学习---Orcale创建用户和表空间的方法

win+R进入“运行”,键入“cmd”回车,打开命令提示符窗口: C:\Users\asministration>sqlplus --->(回车) SQL*Plus:Release 11.2.0.1.0 Production on 星期五 6月 22 19:46:17 2018Copyright (c) 1982, 2010, Oracle. All rights reserved. 请输入用户名: *****(安装oracle时候的用户名)--->(回车)输入口令:****(安装ora

Greenplum+Hadoop学习笔记-14-定义数据库对象之创建与管理表

6.4.创建与管理表 6.4.1.创建表 通过查询CREATETABLE命令帮助如下所示: Command:     CREATE TABLE Description: define a new table Syntax: CREATE [[GLOBAL | LOCAL] {TEMPORARY | TEMP}] TABLE table_name (     -->指定表类型:全局|本地临时 [ { column_name data_type [ DEFAULT default_expr ]   

ThinkPHP 数据库表结构处理类(简单实用)

<?php /*  * mysql表结构处理类  * 创建数据表,增加,编辑,删除表中字段  *  */ class MysqlManage{ /*  * 创建数据库,并且主键是aid  * table 要查询的表名  */ function createTable($table){ $sql="CREATE TABLE IF NOT EXISTS `$table` (`aid` INT NOT NULL primary key)ENGINE = InnoDB;"; M()-&g

[数据库事务与锁]详解五: MySQL中的行级锁,表级锁,页级锁

注明: 本文转载自http://www.hollischuang.com/archives/914 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在数据库的锁机制中介绍过,在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎).表级锁(MYISAM引擎)和页级锁(BDB引擎 ). 行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁.行级锁能大大减少数据库操作的冲突.其加锁粒度最小,但加锁的