mysql sql 百万级数据库优化方案
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎
放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置
默认值0,确保表中num列没有null值,然后这
样查询:
select id from t where num=0
3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20
5.in 和 not in 也要慎用,否则会导致全表扫描,如:
select id from t where num in(1,2,3)
对于连续的数值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3
6.下面的查询也将导致全表扫描:
select id from t where name like ‘%abc%’
若要提高效率,可以考虑全文检索。
7.如果在 where 子句中使用参数,也会导致全表扫描。因为SQL
只有在运行时才会解析
局部变量,但优化程序
不能将访问
计划的选择推迟到运行时;它必须在编译
时进行选择。然
而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:
select id from t where [email=num=@num]num=@num[/email]
<[email=num=@num]mailto:num=@num[/email]>
可以改为强制查询使用索引:
select id from t with(index(索引名)) where [email=num=@num]num=@num[/email]
<[email=num=@num]mailto:num=@num[/email]>
8.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where num/2=100
应改为:
select id from t where num=100*2
9.应尽量避免在where子句中对字段进行函数
操作,这将导致引擎放弃使用索引而进行全表扫描。
如:
select id from t where substring(name,1,3)=’abc’–name以abc开头的id
select id from t where
datediff(day,createdate,’2005-11-30′)=0–‘2005-11-30’生成的id
应改为:
select id from t where name like &lsquo
相关文档:
今天使用PowerDesigner搭建了一个小项目,最后执行完SQL脚本时才发现有2张表的表名中间多了一个空格,查完资料,最后并惊奇发现映射文件竟然多了2个`,就是shift+数字键1的那个,也就是他在脚本是这样写的:
create table `table1`(....);
问题解决。
PS:从网上找到的资料:
作为一个Oracle DBA,MySQL很多SQL语法与Orac ......
关键词:MySQL 备份 恢复
备份是最简单的保护数据的方法,本节将介绍多种备份方法。为了得到一个一致的备份,在相关的表上做一个LOCK TABLES,你只需一个读锁定,当你在数据库目录中做文件的一个拷贝时,这允许其他线程继续查询该表;当你恢复数据时,需要一个写锁定,以避免冲突。
使用SQL ......
转到附录1(mysql 命令大全 - 命令详解
)
转到附录2(mysql乱码问题解决方法
)
在我的Fedora中,在系统安装时我就选择安装了Mysql了,所以就不用再去下载源代码,然后去慢慢编译。哈哈,偷了一个懒。
系统安装好了,Mysql时必不可少的,所以一定要检验一下Mysql可以用不。
首先切换到root账户,然后输入命令:s ......
上微软网站下载sqlserver2005 jdbc driver 包
1、将microsoft sql server 2005 jdbc driver\sqljdbc_1.2\chs\sqljdbc.jar包 copy到发布系统 的 web-inf\lib目录中
2、将microsoft sql server 2005 jdbc driver\sqljdbc_1.2\chs\auth\x86\sqljdbc_auth.dll 文件copy到 windows ......