我正在尝试优化一个在MySQL 5.1中使用视图的查询。似乎即使我从视图中选择1列,它也总是执行全表扫描。这是预期的行为吗?对于我在下面第一个查询中指定的表,该视图只是一个SELECT "All Columns From Tables tables - NOT *“。这是我从构成视图的查询中选择索引列PromotionID时的解释输出。正如您所看到的,它与视图上的输出有很大的不同。key_len: 4
我正在试图理解为什么直接查询需要~0.5s来运行,而使用相同查询的视图需要10s才能运行。MySql v5.6.27.,PRIMARY,4,\N,3629,Using where如果没有where子句,视图的定义f, func2(a) as g对视图的查询:
select * from ViewA t where t.b =
当我对上面的查询执行EXPLAIN时,我收到一条通知,说它总是创建一个临时表。我注意到根据上面的查询创建一个临时表需要相当长的时间。而且,这已经花了很多时间了。因此,我想知道是否可以使用上面的代码创建一个视图:SELECT t.*, a.hits AS ahitsWHERE a.A_ID = t.A_ID并将我的代码更改为:
SELECT * FROM v_t_a WHERE TRACK LIKE 'xxx' ORDER BY hits DESC, ahits
.);<?>CREATE VIEW f_agent AS SELECT agent.id AS id ,agent.name AS name, shop.id AS shop_idshop.id AS shop_id, shop.name AS shop_name FROM agent, shop WHERE agent.shop_id=shop.id and agent.id=$id;
做这