我有两个问题:
首先,如果我在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、Microsoft和现在的MEMSQL比较熟悉--但我也不是数据库方面的专家,因此我们非常感谢您的输入。
我一直在开发一个应用程序,需要交叉引用几个不同的表。我最近遇到的一个非常简单的例子是,我必须:
在每天的基础上,把600 K到1米的记录拉到一个临时的桌子上。
比较一下新的数据拉力和旧的数据拉力之间发生了什么变化。将该信息记录在单独的表中。
用新记录重新填充表。
运行#2是一个类似以下查询的查询:
SELECT * FROM (NEW TABLE) LEFT
我将使用视图优化一个MySQL嵌入式查询,但我不确定它是否会产生效果:
SELECT id FROM (SELECT * FROM t);
我想将它转换为:
CREATE VIEW v AS SELECT * FROM t;
SELECT id FROM v;
我听说过SQL Server中的“索引视图”,但我对MySQL不太确定。任何帮助都将不胜感激。谢谢!
我想创建一个当前信息的视图:
CREATE VIEW activeProducts AS SELECT * FROM products WHERE isActive = 1
上面的语句创建了查询的快照:
SELECT * FROM products WHERE isActive = 1
因此,如果我在运行此查询后更改了表“products”中任何项的状态,它不会反映在视图中。我知道这是mysql的CREATE VIEW功能,有没有可以用来查看或过滤当前信息的开关或命令?
这是后续内容:
我正在做这样的视图(我相信这是可以优化的):
包含的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
我尝试在上面的Postgres链接中使用查询方法(改进0.3ms),它似乎只适用于MySQL (速度快10倍)。
MYSQL
User Load (0.4ms) SELECT * FROM users WHERE reverse_name LIKE REVERSE('%Anderson PhD')
User Load (5.8ms) SELECT * FROM users WHERE name LIKE ('%Anderson Phd')
波斯特格斯
User Load (2.1ms) SELECT * FROM users WHERE reve
我有一个大约有3000本书的数据库,我想通过书名、主题或作者来搜索我的数据库。我已经尽了最大努力使用php和mysql编写脚本,但是我仍然没有正确地完成它。有人能帮忙吗。下面是我带着剧本走了多远..以及mysql数据库中的表示例。
<?php
if (@$find == "")
// Otherwise we connect to our Database
mysql_connect("localhost", "root", "erhun") or die(mysql_error());
mysql_sele