我必须在ruby中使用以下代码:
<%
files = Dir.glob('/**/*')
files.each do |file|
puts file
end
%>
Run Code Online (Sandbox Code Playgroud)
它输出(例如):
/dirA/file1.txt
/dirA/file2.txt
/dirB/file1.txt
/file1.txt
/file2.txt
/subdirA/file1.txt
Run Code Online (Sandbox Code Playgroud)
我希望它像这样输出:
/file1.txt
/file2.txt
/dirA/file1.txt
/dirA/file2.txt
/dirB/file1.txt
/subdirA/file1.txt
Run Code Online (Sandbox Code Playgroud)
基本上,我想在目录之前显示文件.我可以使用排序命令吗?
我有一个简单的表 - >
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
by_id INT UNSIGNED NOT NULL
posted_on INT UNSIGNED NOT NULL
Run Code Online (Sandbox Code Playgroud)
我的桌面引擎是MyISAM.
我呼吁多列索引combo1上by_id,posted_on,id
我运行这个查询 - >
EXPLAIN SELECT * FROM books
WHERE by_id = '1' AND posted_on = '0'
ORDER BY id DESC LIMIT 7;
Run Code Online (Sandbox Code Playgroud)
该Extra柱说,Using where和键列说combo1
但是,当我运行此查询 - >
EXPLAIN SELECT * FROM books
WHERE by_id IN(1,7,10) AND posted_on = '0'
ORDER BY id DESC LIMIT 7;
Run Code Online (Sandbox Code Playgroud)
该Extra …
我有以下查询:
SELECT
fruit.date,
fruit.name,
fruit.reason,
fruit.id,
fruit.notes,
food.name
FROM
fruit
LEFT JOIN
food_fruits AS ff ON fruit.fruit_id = ff.fruit_id AND ff.type='fruit'
LEFT JOIN
food USING (food_id)
LEFT JOIN
fruits_sour AS fs ON fruits.id = fs.fruit_id
WHERE
(fruit.date < DATE_SUB(NOW(), INTERVAL 180 DAY))
AND (fruit.`status` = 'Rotten')
AND (fruit.location = 'USA')
AND (fruit.size = 'medium')
AND (fs.fruit_id IS NULL)
ORDER BY `food.name` asc
LIMIT 15 OFFSET 0
Run Code Online (Sandbox Code Playgroud)
以及您可能想要的所有索引,包括以下正在使用的索引:
fruit - fruit_filter (size, status, location, date)
food_fruits - food_type (type)
food - …Run Code Online (Sandbox Code Playgroud) 我一直在阅读其他帖子,但我没有设法修复我的查询.
使用DESC命令查询慢了x20倍,我必须改进它.这是查询:
SELECT posts.post_id, posts.post_b_id, posts.post_title, posts.post_cont, posts.thumb, posts.post_user, boards.board_title_l, boards.board_title
FROM posts
INNER JOIN follow ON posts.post_b_id = follow.board_id
INNER JOIN boards ON posts.post_b_id = boards.board_id
WHERE follow.user_id =1
ORDER BY posts.post_id DESC
LIMIT 10
Run Code Online (Sandbox Code Playgroud)
这些是表格(更新):
CREATE TABLE IF NOT EXISTS `posts` (
`post_id` int(11) NOT NULL AUTO_INCREMENT,
`post_b_id` int(11) unsigned NOT NULL,
`post_title` varchar(50) COLLATE utf8_bin NOT NULL,
`post_cont` text COLLATE utf8_bin NOT NULL,
`post_mintxt` varchar(255) COLLATE utf8_bin NOT NULL,
`post_type` char(3) COLLATE utf8_bin NOT NULL, …Run Code Online (Sandbox Code Playgroud) 我需要您的帮助来优化查询以避免使用 "使用filesort".查询的工作是选择属于特定标记的所有文章.查询是:
select title
from tag,
article
where tag = 'Riyad'
AND tag.article_id = article.id
order by tag.article_id
Run Code Online (Sandbox Code Playgroud)
表结构如下:
标签表
CREATE TABLE `tag` (
`tag` VARCHAR( 30 ) NOT NULL ,
`article_id` INT NOT NULL ,
KEY `tag` (`tag`),
KEY `article_id` (`article_id`)
) ENGINE = MYISAM ;
Run Code Online (Sandbox Code Playgroud)
条款表
CREATE TABLE `article` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`title` VARCHAR( 60 ) NOT NULL
) ENGINE = MYISAM
Run Code Online (Sandbox Code Playgroud)
样本数据
INSERT INTO `article` VALUES (1, 'About Riyad');
INSERT …Run Code Online (Sandbox Code Playgroud) 我见过很多类似的问题,但我没有看到对我有用的解决方案.或者也许我只是在密集.:)希望有人可以帮助我.
我有下表:
CREATE TABLE `table_name` (
`value1` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`value2` varchar(50) NOT NULL,
`value3` tinytext,
`value4` tinytext,
`value5` tinytext,
`value6` char(3) DEFAULT NULL,
`value7` char(3) DEFAULT NULL,
PRIMARY KEY (`value1`),
KEY value2_index ('value2')
) ENGINE=MyISAM AUTO_INCREMENT=46 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
要验证我的索引已设置,这是SHOW INDEX结果:
+--------------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+--------------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| table_name | 0 | PRIMARY | 1 | value1 …Run Code Online (Sandbox Code Playgroud) 哪些表和列应该有索引?我有一个关于flow_permanent_id和entry_id的索引,但似乎是在使用filesort?
我该怎么做才能优化这个?
mysql> explain SELECT COUNT(*) AS count_all, entry_id AS entry_id FROM `votes` WHERE `votes`.`flow_permanent_id` = '4fab490cdc1c82cfa800000a' GROUP BY entry_id;
+----+-------------+-------+------+----------------------------------+----------------------------------+---------+-------+------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+----------------------------------+----------------------------------+---------+-------+------+----------------------------------------------+
| 1 | SIMPLE | votes | ref | index_votes_on_flow_permanent_id | index_votes_on_flow_permanent_id | 74 | const | 1 | Using where; Using temporary; Using filesort |
+----+-------------+-------+------+----------------------------------+----------------------------------+---------+-------+------+----------------------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud) 查询:
SELECT
r.reply_id,
r.msg_id,
r.uid,
r.body,
r.date,
u.username as username,
u.profile_picture as profile_picture
FROM
pm_replies as r
LEFT JOIN users as u
ON u.uid = r.uid
WHERE
r.msg_id = '784351921943772258'
ORDER BY r.date DESC
Run Code Online (Sandbox Code Playgroud)
我尝试了所有可以想到的索引组合,在谷歌搜索我最好能索引这个,但没有任何效果.
此查询在500个返回的项目上获取0,33并计数 ...
说明:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE r ALL index1 NULL NULL NULL 540 Using where; Using filesort
1 SIMPLE u eq_ref uid uid 8 site.r.uid 1
Run Code Online (Sandbox Code Playgroud)
SHOW CREATE pm_replies
CREATE TABLE …Run Code Online (Sandbox Code Playgroud) 假设我有下表(让我们称之为my_table):
CREATE TABLE `my_table` (
`table_id` int(10) unsigned NOT NULL auto_increment,
`my_field` int(10) unsigned NOT NULL default '0'
PRIMARY KEY (`table_id`),
KEY `my_field` (`my_field`,`table_id`)
) ENGINE=MyISAM
Run Code Online (Sandbox Code Playgroud)
主键my_table是table_id(auto_increment),我也有一个带my_field和的键table_id.
如果我测试这个查询...
EXPLAIN SELECT * FROM my_table
WHERE my_field = 28
ORDER BY table_id DESC;
Run Code Online (Sandbox Code Playgroud)
......我明白了:
id select_type table type possible_keys key key_len ref rows Extra --- ----------- -------- ---- ------------- -------- ------- ----- ---- ----- 1 SIMPLE my_table ref my_field my_field 8 const …
filesort ×9
mysql ×8
indexing ×3
sql ×3
performance ×2
count ×1
directory ×1
explain ×1
group-by ×1
join ×1
left-join ×1
optimization ×1
ruby ×1
sql-order-by ×1