索引方法的sql语句跟普通没有索引的一样吗
我写$sql="select huocheid,chapterid,articlename,chaptername from bqchapter where articleno='".$articleno."' order by huocheid asc limit $offset,$Page_size ";
在数据表里面设置了articleno和huocheid联合索引,是否正确?
mysql数据表有300万条记录,php写select的时候几乎无反应,是否可以通过索引简单解决?
答案:2 悬赏:80 手机版
解决时间 2021-02-01 01:13
- 提问者网友:暮烟疏雨之际
- 2021-01-31 09:16
最佳答案
- 五星知识达人网友:几近狂妄
- 2021-01-31 10:38
索引设置没问题,造成查询慢的问题可能有多个方面
1,where查出的数据量过大,尽可能让数据集缩小范围
2,你的联合索引是否被覆盖。由于一次查询只能用一个索引,如果你设置的联合索引的两个字段,其中有一个字段单独设置了索引,就可能使用了那一个索引而导致联合索引没有生效,where或着oriderby 没有索引的话会慢很多。所以用explain看下是不是用的联合索引
3,innodb引擎查询会扫表,速度比mysiam慢很多
1,where查出的数据量过大,尽可能让数据集缩小范围
2,你的联合索引是否被覆盖。由于一次查询只能用一个索引,如果你设置的联合索引的两个字段,其中有一个字段单独设置了索引,就可能使用了那一个索引而导致联合索引没有生效,where或着oriderby 没有索引的话会慢很多。所以用explain看下是不是用的联合索引
3,innodb引擎查询会扫表,速度比mysiam慢很多
全部回答
- 1楼网友:往事隔山水
- 2021-01-31 11:58
在进行数据表检查或修补时,可以先将数据表锁定,可确保数据表的安全:
mysql>lock table tbl_name read;
mysql>flush tables;
将数据表锁定后再进行检查或修补的工作。完成后再解除锁定:
mysql>unlock tables;
//lock table tbl_name read表示要锁定成只读状态,在这个状态下用户只能读取数据表,不能写入。
lock table tbl_name write则是更严格的锁定,用户不能读取也不能写入
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯