对于 句子一:
先生成 v_user 视图,然后在 视图里 搜索 数据
=> 先组合两张 一千万的表,生成 一千万的条视图,再筛选;对于句子二:
现在 user 里筛选,然后 join user_info 的数据
=> 先从基本表的一千万条筛选出一条,再 合并;是这样的么?
先生成 v_user 视图,然后在 视图里 搜索 数据
=> 先组合两张 一千万的表,生成 一千万的条视图,再筛选;对于句子二:
现在 user 里筛选,然后 join user_info 的数据
=> 先从基本表的一千万条筛选出一条,再 合并;是这样的么?
ALGORITHM=UNDEFINED
DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `v_user`AS
SELECT
`user`.user_id,
`user`.user_name,
`user`.pass_word,
`user`.create_time,
user_info.nick_name,
user_info.email,
user_info.last_upd_time
FROM
`user`
INNER JOIN user_info ON user_info.user_id = `user`.user_id where `user`.user_id = 1;
这样?
我这边的人说影响效率呀,我推敲一下,的确有点问题。如上面的表:
user 数据量 1kw
user_info 1kw
v_user 1kwselect * from v_user where user_id = 1
的时候:
如果先 构造出视图,那么就会 取 user 和 user_info 表数据,构造一个 1kw 数据量的临时表 v_user,然后去 v_user 查询。肯定会比
[code=sql]select user.*, user_info.nick_name from user inner join user_info on user.user_id = user_info.user_id where user.user_id = 1[coe]
这样慢吧除非是像我后面说的,构造视图的时候 嵌入了 查询条件,真的是这样吗?我本来准备弄个 数据测试下的,在查循环的写法……