题目如下:
1.User表有name和birthday两个字段,B表只有celebrity一个字段,要求取出user的name,条件是birthday存在于B表的celebrity字段中,现有的Sql语句是select name from User where birthday in (select celebrity from B),要求优化这段Sql语句。
注:我的方案是 select name from User where birthday in (select distinct celebrity from B. 可能没优化多少。2.从A表中取出数据,根据count(VARCHAR2(10))字段进行检索,把count是10的数据取出来,下面的SQL文性能有点低,请写出性能高的2个SQL文
SELECT * FROM A WHERE count=103.有以下SQL文,为提高性能,请对其进行修改(userTable没有index)
SELECT‘not found’FROM userTable WHERE memberid◇‘aaaa’4.从SomeTable表中取出数据,根据col_1(VARCHAR2(10))字段进行模糊查询,下面的SQL文性能有点低,请写出性能高的一个SQL文
SELECT * FROM SomeTable WHERE col_1 LIKE‘%a%’;
1.User表有name和birthday两个字段,B表只有celebrity一个字段,要求取出user的name,条件是birthday存在于B表的celebrity字段中,现有的Sql语句是select name from User where birthday in (select celebrity from B),要求优化这段Sql语句。
注:我的方案是 select name from User where birthday in (select distinct celebrity from B. 可能没优化多少。2.从A表中取出数据,根据count(VARCHAR2(10))字段进行检索,把count是10的数据取出来,下面的SQL文性能有点低,请写出性能高的2个SQL文
SELECT * FROM A WHERE count=103.有以下SQL文,为提高性能,请对其进行修改(userTable没有index)
SELECT‘not found’FROM userTable WHERE memberid◇‘aaaa’4.从SomeTable表中取出数据,根据col_1(VARCHAR2(10))字段进行模糊查询,下面的SQL文性能有点低,请写出性能高的一个SQL文
SELECT * FROM SomeTable WHERE col_1 LIKE‘%a%’;
解决方案 »
- Navicat for MySQL 出发器 玄机
- Navicat连接mysql:1045-Acess denied for user:'root'@'localhost'(Using password:YES)
- 批量列出多记录首条记录
- vc调用MySql存储过程,则存储过程中不能有select语句吗?
- 不同的database能不能拥有其单独的二进制日志?
- 未找到匹配的结果,能否让查询字段返回0?
- 关于mysql服务重装的问题
- MyODBC/Myoledb无法读取有text列的MySQL
- MySQL主从备份总是不成功
- 问一个查询语句,多谢
- mysql数据库问题
- 请问UDF 返回值是一组数组怎么弄?
注:我的方案是 select name from User where birthday in (select distinct celebrity from B. 可能没优化多少。
显然如果你的B表中celebrity不是主键,有重复的话,下面的语句比较合适。
select name from User where exists (select 1 from B where celebrity=birthday)
SELECT * FROM A WHERE count=10
SELECT * FROM A WHERE count='10'另外需要在count 字段上创建索引。
SELECT‘not found’FROM userTable WHERE memberid◇‘aaaa’
无法继续优化。除非创建索引。4.从SomeTable表中取出数据,根据col_1(VARCHAR2(10))字段进行模糊查询,下面的SQL文性能有点低,请写出性能高的一个SQL文
SELECT * FROM SomeTable WHERE col_1 LIKE‘%a%’;无法继续优化。除非创建全文索引。
select name from User a inner join (select distinct celebrity from B) b
on a.birthday=b.celebrity
2
SELECT * FROM A WHERE count=10
在 count上建立索引
3
为什么不建立索引
4
%a%:无法用到索引,a%这种可以
SELECT‘not found’FROM userTable WHERE memberid◇‘aaaa’
无法继续优化。除非创建索引。
******************************************这个"<>"(不等于)建了索引也会进行全部检索,没法优化.