我在MySQL中创建了一个视图
create view vtax
as
SELECT * FROM table1
union
SELECT * FROM table2;在表1中有800000条记录,table2有500000条记录,当我运行独立查询时,结果返回0.078秒,但当我通过视图运行它们时,它花费的时间超过10-15秒。
select * from vtax where col1=value; -- takes more than 10-15 secs
select * from table1 where col1=value; -- takes 0.078 secs
select * from table2 where col1=value; -- takes 0.078 secs我已经分别在表上创建了索引。
任何帮助/想法应该做什么。
发布于 2015-04-25 15:26:17
联合
对结果执行distinct (通常是排序)。你能使用
联合所有
?(即这些行是不同的吗?)
发布于 2015-04-25 16:02:22
你应该把苹果和苹果进行比较。联合通常比简单查询慢得多。将联合与视图进行比较。您会注意到标准的联合查询也很慢。可能优化器在决定最优路径时有问题。检查其他一些问题,如:Why are UNION queries so slow in MySQL?
发布于 2015-04-25 16:06:41
正如注释中所述,视图不会在MySQL中建立索引。
如果在查询中使用联合:
SELECT * FROM table1 WHERE col1 = 'value'
UNION
SELECT * FROM table2 WHERE col1 = 'value'然后就可以使用索引(如果有的话)。
https://stackoverflow.com/questions/29862302
复制相似问题