请问如下SQL语句怎么优化比较好?
假设有个表如下,都没做索引.字段名 类型 长度
姓名 CHAR 50
性别 CHAR 2
出生日期 datetime 8
地址 CHAR 200
问题1. 应该全部字段 都做索引吗? 性别也要做索引吗? 因为正常情况下,不是男就是女了.
假设这个表 的数据非常多,有10W条记录以上
如这个表经常 要查询
名字里有"华" 字, 地址在北京的.
那么就要
select * from 数据库 where 姓名 like '%华%' and 地址 like '%北京%'
这样应该是非常慢的.
问题2. 这种情况下有优化方法吗?
问题3.假如 要找 名叫 "张三" ,性别是 "男", 2000年出生的记录的话
应该是
select * form 数据库 where 姓名='张三' and 性别='男' and 出生日期 between '2000-1-1' and '2001-1-1'
还是
select * form 数据库 where 出生日期 between '2000-1-1' and '2001-1-1'
and 姓名='张三' and 性别='男'
好一点?为什么?
因为这个都是半懂不懂的,希望可以学习一下,谢谢. --------------------编程问答-------------------- 建议帖主先学会在查询分析器里面查看查询执行计划。
--------------------编程问答--------------------
网上搜了下 查询分析器里面查看查询执行计划
好像都是介绍怎么用这东西.没介绍怎么具体优化啊 --------------------编程问答-------------------- select * form 数据库 where 姓名='张三' and 性别='男' and 出生日期 between '2000-1-1' and '2001-1-1'
应该在姓名,性别,出生日期设置索引,这样才能让数据库驱动程序快速定位数据 --------------------编程问答-------------------- 10W+数据量一点也不算大
性别 CHAR 2:类别就用错了,最快的查询方式一定是整数,最好用 bit
索引的作用是什么,最好找找它的定义,然后自己试着去理解
补充:VB , 基础类