是否可以添加类似where子句的内容作为全局' mysql会话的参数。
例如,公司有多个用户,您想要查询该公司的用户,通常您会使用如下语句:
SELECT * FROM users WHERE users.companyId = 2;
问题是添加WHERE子句意味着对代码产生巨大影响。虽然,我们定义了关系,因此我的形象(尽管我不认为它存在),你可以创建一个与"全球"约束该会话中的所有查询都应符合。
答案 0 :(得分:1)
您可以创建视图
CREATE VIEW view2 AS SELECT * FROM table1 WHERE companyid = 2;
如果你的诅咒缓慢,你可以做一些事情:
where
字段添加索引。 memory table
,并为hash
和=
字段使用IN
索引。请参阅:http://dev.mysql.com/doc/refman/5.0/en/create-view.html
http://dev.mysql.com/doc/refman/5.5/en/index-btree-hash.html
http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html
答案 1 :(得分:1)
答案是否定的。
如前所述,你应该在该coloumn上加上一个索引。你可以创建一个视图。
您也可以使用临时表。
来自mysql docs:
创建表时可以使用TEMPORARY关键字。临时的 table仅对当前连接可见,并被删除 连接关闭时自动这意味着两个 不同的连接可以使用相同的临时表名 相互冲突或与现有的非TEMPORARY表冲突 同名。 (现有表隐藏到临时表之前 被丢弃了。)
作为最后的想法,我可以说,如果你一遍又一遍地执行相同的查询,你应该重新考虑你的模型图,也许做一些非规范化。
答案 2 :(得分:0)
当你从没有companyId的表中执行select时会发生什么:)你可以创建视图,然后从中选择