本文目录一览:
- 1、关于MySQL数据库下订单的超时处理
- 2、mysql建多维度的表应该怎么弄啊?
- 3、php+mysql 数据库制作个后台订单管理出现问题
- 4、Mysql查询用户的订单表,每个用户登录进去首页后显示自己对应的订单表,sql语句怎么写
- 5、在Mysql数据库中 如何实现表的多对一关联?请说具体一点~
- 6、mysql联表聚合更新
关于MySQL数据库下订单的超时处理
对查询中经常作为查询条件的字段增加索引,比如说
1
select * from table1 where name like 'xxx' and create_time '2013-06-01'
这里就可以为name 和 create_time分别创建索引;
1
2
ALTER TABLE table1 ADD INDEX `ind_CreateTime` (`create_time`);
ALTER TABLE table1 ADD INDEX `ind_name` (`name`);
2. 优化导致慢查询的SQL语句。可以将一条查询分解为多条小范围的查询,将结果union在一起。尽量减少在where 条件中使用 like or between等运算符
mysql建多维度的表应该怎么弄啊?
MySQL分库分表,一般只能按照一个维度进行查询.
以订单表为例, 按照用户ID mod 64 分成 64个数据库.
按照用户的维度查询很快,因为最终的查询落在一台服务器上.
但是如果按照商户的维度查询,则代价非常高.
需要查询全部64台服务器.
在分页的情况下,更加恶化.
比如某个商户查询第10页的数据(按照订单的创建时间).需要在每台数据库服务器上查询前100条数据,程序收到 64*100 条数据,然后按照订单的创建时间排序,截取排名90-100号的10条记录返回,然后抛弃其余的6390条记录.如果查询的是第100页,第1000页,则对数据库IO,网络,中间件CPU,都是不小的压力.
分库分表之后,为了应对多维度查询,很多情况下会引入冗余.
比如两个集群,一个按照用户ID分库分表,另外一个按照商户ID分库分表.
这样多维度查询的时候,各查各的.
但是有几个问题,一样不好解决.
比如,
每扩展一个维度,就需要引入一个集群.
集群间的数据,如何保证一致性.
冗余占用大量磁盘空间.
从朋友那里看到的订单表结构.做冗余会占用大量的磁盘空间.
create table TS_ORDER
(
ORDER_ID NUMBER(8) not null,
SN VARCHAR2(50),
MEMBER_ID NUMBER(8),
STATUS NUMBER(2),
PAY_STATUS NUMBER(2),
SHIP_STATUS NUMBER(2),
SHIPPING_ID NUMBER(8),
SHIPPING_TYPE VARCHAR2(255),
SHIPPING_AREA VARCHAR2(255),
PAYMENT_ID NUMBER(8),
PAYMENT_NAME VARCHAR2(50),
PAYMENT_TYPE VARCHAR2(50),
php+mysql 数据库制作个后台订单管理出现问题
$sql = SELECT 字段,字段 。。。。 FROM 表 LIMIT page(变量),20
page 取值由当前所在的页码决定
$list = excute($sql);//执行sql的方式 根据实际的代码而定
PHP: foreach ($list as $row){
echo $row[字段],$row[字段],。。。。。。。
}
Mysql查询用户的订单表,每个用户登录进去首页后显示自己对应的订单表,sql语句怎么写
登陆后获取userid,然后指定订单表user=刚才的
select * from order a,user b where a.id=b.id and b.userid='XXX'
在Mysql数据库中 如何实现表的多对一关联?请说具体一点~
现在的数据库基本都是关系数据库,表与表之间的关联一般都是靠字段来维持的。
例如3个表,分别是用户信息表,购物订单表,帐户金额明细表
表结构如下(我写简单哈):
用户信息表字段:userid,username,password
购物订单表字段:orderid,userid,goods,price
帐户金额明细表:aid,userid,orderid,price
从上面3个表就能看出,他们之间的管理是:
通过用户信心表的userid可以获得购物订单表的订单信息,如果想要获得用户或者购物订单的账户金额明细数据,可使用userid或者orderid去帐户金额明细表查询相关数据,示例SQL如下:
SELECT * FROM 购物订单表字段 where userid=12
SELECT * FROM 帐户金额明细表 where userid=12
SELECT * FROM 帐户金额明细表 where orderid=3356
如果你还不明白的话,可发消息给我。
mysql联表聚合更新
运行下列sql更新查询即可实现提问中的需求:
update order,(select order_id,
sum(goods_num*goods_price) as m
from order_goods group by order_id) b
set order.goods_total=b.m
where order.order_id=b.order_id;