我用这个视图查看我的mysql数据库
DROP VIEW IF EXISTS time_all;
CREATE VIEW `time_all` AS
SELECT `scans`.`datetime` FROM `time_clock`.`scans`
ORDER BY `scans`.`datetime` ASC;
我想为这个视图中的每一行添加唯一的排名值,有人能告诉我怎么做吗?
我有一个观点,其中包含了一个联合的一切。例如:
CRATE VIEW myView as
(SELECT col1, col2, col3
FROM tab1)
UNION ALL
(SELECT col1, col2, col3
FROM tab2)
这些是大型表,每个表包含数以百万计的10s行。如果我写:
SELECT *
FROM myView
LIMIT 1;
它不会立即返回,而不会像其他针对该视图编写的查询那样返回。如果在对单个基础表的查询中使用该限制,则该限制是立即的。我在基础表上有索引。在应用任何过滤条件之前,MySQL似乎正在为视图创建整个聚合数据集(视图中的查询)。这太
我有两个问题:
首先,如果我在MySQL中有一个简单的视图,如下所示:
CREATE VIEW `peopleView` AS
SELECT id, name, surname FROM people
然后执行以下查询:
SELECT * FROM peopleView WHERE id = 5
MySQL服务器会在后台创建类似这样的东西吗?
SELECT id, name, surname FROM people WHERE id = 5
换句话说,它不会先执行视图,它可能会返回5000条记录,然后在这5000条记录上尝试过滤到id = 5的位置?这会使视图变得非常慢...
其次,我认为视图
我正在尝试使用MySQL创建一个带有" with“子句的视图
WITH authorRating(aname, rating) AS
SELECT aname, AVG(quantity)
FROM book
GROUP BY aname
但MySQL似乎并不支持这一点。
我认为这是非常标准的,我确信Oracle支持这一点。有没有办法强制MySQL使用"WITH“子句?我已经在MyISAM和innoDB引擎上尝试过了。这两种方法都不起作用。
我将使用视图优化一个MySQL嵌入式查询,但我不确定它是否会产生效果:
SELECT id FROM (SELECT * FROM t);
我想将它转换为:
CREATE VIEW v AS SELECT * FROM t;
SELECT id FROM v;
我听说过SQL Server中的“索引视图”,但我对MySQL不太确定。任何帮助都将不胜感激。谢谢!
这是后续内容:
我正在做这样的视图(我相信这是可以优化的):
包含的db.php:
$conn = mysql_connect("localhost","directory","dghgffhghf") or die(mysql_error());
mysql_select_db("directory", $conn) or die(mysql_error());
mysql_query("CREATE or REPLACE VIEW {$user}_rooms AS SELECT * FROM rooms WH
我们的500 K行视图变得很糟糕,因为它们不能使用底层表的索引。View上的where子句对视图创建没有影响。这个视图是在Mysql子句应用之前创建的吗,就像在Sql server中一样?我们有办法用Where子句和Joins来加速视图查询吗?
,MySQL视图的一个问题是,MySQL不会将谓词从外部查询“推”到视图查询中。
select * from reportview_23 where id = 100;