如表: id 商品类型 商品属性 属性内容 商品店ID,排序ID
id typeid attr content shopid,orderid
1 2 颜色 联想 Y470 ITH 1,99
2 2 长度 联想 Y470 -ITH 1,100
....
300 1 宽度 联想 G460 2,99
301 3 长度 联想 E40 2,100
...
500 3 颜色 联想 Y470(ITH) 3,99
501 1 颜色 DELL Y470(ITH) 3,100
...
我的网站的表,如上所示,商品类型1,2,3,4..分另表示电脑,家电,商品店ID分另表示不同的商家,排序ID也是从99-1000之间,记录中可能都有重复的字段,一共数据可达500W以上条,现在是网站一开,就说占MYSQL100%,大家有好的处理方法没,加个索引,听说能提高效率
id typeid attr content shopid,orderid
1 2 颜色 联想 Y470 ITH 1,99
2 2 长度 联想 Y470 -ITH 1,100
....
300 1 宽度 联想 G460 2,99
301 3 长度 联想 E40 2,100
...
500 3 颜色 联想 Y470(ITH) 3,99
501 1 颜色 DELL Y470(ITH) 3,100
...
我的网站的表,如上所示,商品类型1,2,3,4..分另表示电脑,家电,商品店ID分另表示不同的商家,排序ID也是从99-1000之间,记录中可能都有重复的字段,一共数据可达500W以上条,现在是网站一开,就说占MYSQL100%,大家有好的处理方法没,加个索引,听说能提高效率
2.排序用goruby shopid,orderid
3.子版快是用type来区分的
所以是加三个索引,还是加在那个索引最合适,谢谢高手
建议你给你的SQL语句,然后再进行分析讨论。
SQL语句是什么,如果是%内容%,无法用到索引2.排序用goruby shopid,orderid
在这3个字段上建立索引3.子版快是用type来区分的你的SQL语句是什么,EXPLAIN SQL语句
,谢谢楼上两位兄弟的建议
网站已运行,表设计级的优化已经不可行?这个我可以改的,因为现在用户访问量不是很多,而且我的数据我本机可以传一到两天,我的主页也是两天更新一次,这个不是问题,表设计我想是优先考虑,比如弄个索引,要不建表优化,这快有什么建议,欢迎告知,谢谢
create index xxx1 on dg_gwsosoitems(shopid,itemtype,nzk);
create index xxx2 on dg_gwsosoitems(shopid,itemtype,newprice);
create index xxx3 on dg_gwsosoitems(ngroupid,shopid)
39 rows in set (9.86 sec)mysql> EXPLAIN select dg_shoplist.shopname,dg_gwsosoitems.shopid from dg_gwsosoi
tems ,dg_shoplist where dg_gwsosoitems.shopid = dg_shoplist.id group by dg_gwsos
oitems.shopid LIMIT 39;
+----+-------------+----------------+--------+---------------+---------+--------
-+----------------------------------+--------+---------------------------------+| id | select_type | table | type | possible_keys | key | key_len
| ref | rows | Extra |+----+-------------+----------------+--------+---------------+---------+--------
-+----------------------------------+--------+---------------------------------+| 1 | SIMPLE | dg_gwsosoitems | ALL | NULL | NULL | NULL
| NULL | 539008 | Using temporary; Using filesort || 1 | SIMPLE | dg_shoplist | eq_ref | PRIMARY | PRIMARY | 4
| sq_ing9988.dg_gwsosoitems.shopid | 1 | |+----+-------------+----------------+--------+---------------+---------+--------
-+----------------------------------+--------+---------------------------------+2 rows in set (0.17 sec)
xxx3(这个什么意思啊)我真是一步一步都要问,没法子啊,希望大家不要嫌我烦啊,自己的网站,只能用心做了不会我就要向大家学习了
如果有兴趣学习,则可以查看MYSQL手册中的CREATE INDEX语法说明。 MYSQL手册可以从官网下载,是免费的。
EXPLAIN select dg_shoplist.shopname,dg_gwsosoitems.shopid from dg_gwsosoitems ,dg_shoplist where dg_gwsosoitems.shopid = dg_shoplist.id group by dg_gwsosoitems.shopid,dg_gwsosoitems.ngroupid LIMIT 39;
执行时间8.7秒EXPLAIN select dg_shoplist.shopname,dg_gwsosoitems.shopid from dg_gwsosoitems ,dg_shoplist where dg_gwsosoitems.shopid = dg_shoplist.id group by dg_gwsosoitems.shopid LIMIT 39;(dg_gwsosoitems.ngroupid)执行时间22秒
我是不是没有成功建索引啊
alert table dg_gwsosoitems add INDEX `sosoindex1` ('ngroupid','shopid') ;
alert table dg_gwsosoitems add INDEX `sosoindex2` ('shopid','itemtype','newprice') ;
alert table dg_gwsosoitems add INDEX `sosoindex3` ('shopid','itemtype','nzk') ;
alert table dg_gwsosoitems add INDEX `sosoindex1` (ngroupid,shopid) ;
两个都不成功啊原来要create index sosoindex1 on dg_gwsosoitems(ngroupid,shopid);的才行啊,看来哥还嫩了点,谢谢ACMAIN_CHM大侠啊
select dg_shoplist.shopname,dg_gwsosoitems.shopid from dg_gwsosoitems ,dg_shoplist where dg_gwsosoitems.shopid = dg_shoplist.id group by dg_gwsosoitems.shopid LIMIT 39;
只要1sec不到
select dg_shoplist.shopname,dg_gwsosoitems.shopid from dg_gwsosoitems ,dg_shoplist where dg_gwsosoitems.shopid = dg_shoplist.id group by dg_gwsosoitems.shopid , dg_gwsosoitems.ngroupid LIMIT 39;却多花了时间