Как я могу ускорить процесс базы данных? - PullRequest
1 голос
/ 28 января 2012

У меня есть база данных MySQL, которая содержит более 9000 строк с 10 полями.Он был импортирован из файла Excel, поэтому все в одной таблице.

Когда я запускаю запрос, который уже сузил выбор, я получаю 7000 строк обратно на мою страницу просмотра Codeigniter.Браузер зависает на 30 секунд и просит убить страницу, потому что ответа не было.Если я подожду, я увижу результат в конце концов.Мне было интересно, есть ли способы улучшить это?

Ответы [ 4 ]

1 голос
/ 28 января 2012

Добавить индексы (индексы) для определенных столбцов;если столбцы текстовые, то добавьте индексы FULLTEXT

1 голос
/ 28 января 2012

Начните с чтения о 'limit' в SQL-запросах, чтобы разбить ваш вывод на страницы.

1 голос
/ 28 января 2012

Запускаете ли вы свои запросы в каком-то цикле?

Согласны с ответами на нумерацию страниц, используйте пределы и смещения.Если вы запустите 10per страницы, то это 700 запросов.Я бы использовал библиотеку разбивки на страницы кодигнитера следующим образом.

$route['controller/(:num)'] = 'controller/index/$1';

-

public function index($offset=0)
{

   //set a limit of 10 per result
   $limit = 10;

   //query the database
   $q = "SELECT * FROM {table_name} LIMIT={limit} OFFSET={offset} ORDER BY {date} desc";

   //count the results
   $count = count({query results});

   //setup pagination config
   $config = array(
        'base_url' => site_url('controller/'),
        'total_rows' => $count,
        'per_page' => $limit,
        'uri_segment' => 2
   );

   //init the pagigination
   $this->pagination->initialize($config);

   //load the view and pagination data
    $this->load->view('link_to_template', array(
            'pagination'  =>  $this->pagination->create_links(),
            'results'  =>  {query results}
    ));

} 
1 голос
/ 28 января 2012

В идеале, придумайте лучший запрос или предоставьте своим пользователям более качественные условия поиска.Если в конечном итоге им нужно просмотреть все 7000 строк, вам нужен какой-то вид подкачки.Один из вариантов - пейджинг AJAX, как описано в этой статье .По сути, у вас есть новый запрос для каждой группы строк, но пользователь остается на той же странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...