Индекс в mysql

S
На сайте с 11.03.2010
Offline
29
392

Добрый вечер, кто знает, сколько какого размера примерно должна быть выборка из таблицы, чтобы увидеть эффект от использования индекса?

К примеру, есть таблица комментариев

CREATE TABLE `comments` (

`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,

`name` VARCHAR( 255 ) NOT NULL ,

`body` TEXT NOT NULL ,

`url` VARCHAR( 255 ) NOT NULL ,

PRIMARY KEY ( `id` ) ,

INDEX ( `url` ) );

url - соответственно адресс страницы на которой расположен комментарий

И сам запрос:

SELECT name,body FROM comments use index (url) WHERE url ="$url"

Правильноли построин запрос? И как проверить его эффективность?

WS
На сайте с 17.11.2010
Offline
25
#1
secach:
сколько какого размера примерно должна быть выборка из таблицы

больше сотни строк

WhiteSmartFox добавил 18-02-2011 в 17:30

secach:
Правильноли построин запрос?

правильно, хотя по логике запрос вида

SELECT name,body FROM comments WHERE url ="$url"

будет ему аналогичен (в таких простых выражениях mysql должен сам догадаться использовать индекс )

WhiteSmartFox добавил 18-02-2011 в 17:32

secach:
И как проверить его эффективность

Включением статистики запросов в phpAdmin, либо нагрузычным тестированием. (запуском десятков php скриптов которые будут использовать эти запросы, с сохранением времени их работы)

S
На сайте с 11.03.2010
Offline
29
#2

Спасибо большое за ответ, просто я еще не разу не использовал индексы, вот помаленьку разбираюсь))

DZ
На сайте с 03.02.2011
Offline
2
#3

А не боишься, что сайт взломают через MySQL-инъекции? Судя по приведённому примеру в первом сообщении. Я имею в виду использование функции mysql_escape_string() (в PHP, для других языков есть аналоги. Также есть аналоги для других СУБД):

$query = "SELECT name, body FROM comments WHERE url = '" . mysql_escape_string( $url ) . "'";
S
На сайте с 11.03.2010
Offline
29
#4
DoctorZlo:
А не боишься, что сайт взломают через MySQL-инъекции? Судя по приведённому примеру в первом сообщении. Я имею в виду использование функции mysql_escape_string() (в PHP, для других языков есть аналоги. Также есть аналоги для других СУБД):

$query = "SELECT name, body FROM comments WHERE url = '" . mysql_escape_string( $url ) . "'";

)) Такой запрос и был, тока потом я убрал ескейп, т.к. эта переменная не может стать неверноей, ей ЧПУ не позволит, если URL не существует, то 404, параметров в URL тоже нет

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий